pip install awscli
AWS CLIの aws configure コマンドで認証情報ファイルを設定
aws configure
AWS Access Key ID [None]: *************ID
AWS Secret Access Key [None]: ******************************KEY
Default region name [None]: ap-northeast-1
Default output format [None]: json
--profileオプションでプロファイル名を指定可能。(無指定の場合はdefault)
$ aws configure --profile user001
AWS Access Key ID [None]: *************ID
AWS Secret Access Key [None]: ******************************KEY
Default region name [None]: ap-northeast-1
Default output format [None]: text
export AWS_ACCESS_KEY_ID=*************ID
export AWS_SECRET_ACCESS_KEY=******************************KEY
export AWS_DEFAULT_REGION=ap-northeast-1
export AWS_DEFAULT_OUTPUT=json
~/.aws/credentials
[default]
aws_access_key_id=*************ID
aws_secret_access_key=******************************KEY
[user001]
aws_access_key_id = *************ID
aws_secret_access_key = ******************************KEY
aws configure list
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************AAA shared-credentials-file
secret_key ****************XXXX shared-credentials-file
region ap-northeast-1 config-file ~/.aws/config
- defaultにはec2を操作する権限無
- user001がec2を起動する権限有
aws ec2 start-instances --instance-ids "<instance_id>"
An error occurred (UnauthorizedOperation) when calling the StartInstances operation: You are not authorized to perform this operation. Encoded authorization failure message:
XASDfjkjlkjldfjlklkjklk.......
user001を指定してec2を起動
aws ec2 start-instances --instance-ids "<instance_id>" --profile user001
{
"StartingInstances": [
{
"CurrentState": {
"Code": 0,
"Name": "pending"
},
"InstanceId": "i-xxxxxxxxxx",
"PreviousState": {
"Code": 80,
"Name": "stopped"
}
}
]
}
lambda_function.py(Pythonの場合)などの実行ファイルを別環境で開発した場合にLambdaにUPするためのTool
pip install lambda-uploader
アップロードする内容のディレクトリ(例ではupload)に移動しファイルをup
cd upload
lambda-uploader
問題なければ以下の様な結果に
λ Building Package
λ Uploading Package
λ Fin
※Runtimeを指定しておくと便利
{
"name": "Name",
"description": "Description",
"region": "ap-northeast-1",
"handler": "lambda_function.lambda_handler",
"role": "arn:aws:iam::111111111111:role/XXXXX",
"timeout": 300,
"memory": 128,
"runtime": "python3.6",
"variables":
{
"TestVarA":"value",
"TestVarB":"value"
}
}
Lambda CLI create-function コマンドを実行して Lambda 関数を作成 lambda-uploaderを使えない場合はこちらで
# uploadディレクトリ入る
cd upload
# ディレクトリの中身を全て含めたupload.zip作成
# ここでは一つ上のディレクトリに作成
# zipファイルはコマンドで作成しないと失敗する(※Macの場合はおそらく)
zip -r9 ../upload.zip *
Pathを指定して.zip ファイルをアップロードする ※lambda.jsonは読み込まない(おそらく)ので環境変数も指定しておく ※環境変数(environment Variables)を複数指定したい時は最後にしないと失敗する(調査中)
aws lambda create-function \
--region ap-northeast-1 \
--function-name function-name \
--zip-file fileb://{Path}xxx.zip \
--role arn:aws:iam::111111111111:role/XXXXX \
--handler lambda_function.lambda_handler \
--runtime python3.6 \
--profile xxxx\
--environment Variables="{VariableA=xxxx,VariableB=xxxxx}"
同じ AWS リージョンの Amazon S3 バケットに .zip ファイルをアップロード バケット名(bucketName)とオブジェクト名(xxx.zip)を指定
aws lambda create-function \
--region ap-northeast-1 \
--function-name function-name \
--code S3Bucket=bucketName,S3Key=xxx.zip \
--role arn:aws:iam::111111111111:role/XXXXX \
--handler lambda_function.lambda_handler \
--runtime python3.6 \
--profile xxxx\
--environment Variables="{VariableA=xxxx,VariableB=xxxxx}"