はじめに
【AWS Lambda関数作成】IAMでの権限設定に関しての備忘録です。
初心者です😅
間違えてる部分が多々あると思います。
もし見つけた場合、ツッコミいただけると助かります🙇
🦁結論🦁
IAMを使って適切な権限を利用する。
今回、必要な権限は下記の6つになります。
- AmazonAPIGatewayAdministrator:「 APIGatewayへのフルアクセス」
- AWSLambda_FullAccess:「 Lambdaへのフルアクセス」
- AWSLambdaBasicExecutionRole:「 Lambda関数が cloudWatchへのログを書き込める」
- lambdaInvokeFunction Policy:「作成した Lambda関数を呼び出せる」(Step functionsからの Lambdaアクセス権限)※自身でポリシーを作成
- StartExecution Policy:「Step functionsのステートマシンから Lambda関数を実行を開始する」(発火API)※自身でポリシーを作成
- DescribeExecution Policy:「Step functionsのステートマシンから Lambda関数の実行に関する情報を取得できる」(状態維持API)※自身でポリシーを作成
これの権限を付与することで Lambda関数を適切に動かせられる。
手順
- ポリシーを作成。
- ロールを作成する。
押さえておくべき点
- Step functionsのポリシーは自身でポリシーを作成する必要がある。
- “Effect”に”Allow”または”Deny”を指定できる。Allow”は指定されたアクションを実行する権限を与え、“Deny”はそれを禁止することを意味する。
利用シーン
- AWSを利用するにあたって様々な用途に応じて権限を付与する。
注意点
- 「Step functionsのステートマシンから Lambda関数の実行に関する情報を取得することを許可」(状態維持API)の"Resource”でのArnの入力の際には「:*」を入れる必要がある。
前提🙊
AWSのアカウント作成が終わってる。
AWS Lambdaの環境構築が終わってる。
AWS Lambdaのコードがテスト含め完了してる。
手順詳細
設定などをjson型式で入力などすることで許可の範囲を決定する。
ポリシー許可作成
AWSのメイン画面で「IAM」を検索。
サービスを選択をして「Step functions」と入力して「Step functions」を選択。
ポリシーエディタの下にあるビジュアルを「json」に変更して1から順番に3回繰り返し作成する。
1.「Step functionsのステートマシンから Lambda関数を実行を開始することを許可」(発火API)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "states:StartExecution",
"Resource": "<StepFunctionsのArnを記述>"
}
]
}
2.「Step functionsのステートマシンから Lambda関数の実行に関する情報を取得することを許可」(状態維持API)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "states:DescribeExecution",
"Resource": "<StepFunctionsのArnを記述>:*"
}
]
}
※「:*」これがあることでこのステートマシンのすべての実行に対するアクションが許可される。
3. Step functionsから Lambda関数へのアクセス許可
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "lambda:InvokeFunction",
"Resource": “<関数の ARNを記述>”
}
]
}
ロールを作成するを選択。
左側から「ロール」をクリックして「ロールを作成する」をクリック。
ユースケースの部分で「Lambda」を選択して「次へ」をクリック。
許可ポリシーを6つを検索してチェックをして「次へ」をクリック。
- AmazonAPIGatewayAdministrator
- AWSLambda_FullAccess
- AWSLambdaBasicExecutionRole
- lambdaInvokeFunction
- StartExecution
- DescribeExecution
※4〜6は「絞り込みタイプ」を「カスタマー管理」を選択すると簡単に絞り込める。
左側の「ロール」をクリックして先ほど作成したロール(myrole)をクリック。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"lambda.amazonaws.com",
"apigateway.amazonaws.com",
"states.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}
コード解説
“Principal"
許可してるものを示してる。
"lambda.amazonaws.com"
AWS Lambda サービス(Lambda invoke)を使用してLambda 関数を呼び出すこと許可
"apigateway.amazonaws.com"
API Gateway からのリクエストや操作を許可
"states.amazonaws.com"
Step Functions のステートマシンの操作を許可
「ポリシーを更新」をクリック。
作成完了。
参考にしたサイト📗
API ゲートウェイを使用してStep Functions API
AWS Lambda関数作成 セクション リンク