あめがえるのITブログ

頑張りすぎない。ほどほどに頑張るブログ。

【AWS】APIGateway+Lambda構成における権限付与について


APIGateway+Lambda構成における権限付与について

APIGateway+Lambda構成における権限付与について

APIGatewayからLambdaを実行する場合、Lambdaの実行権限の付け方にいくつか方法がある。

方法

1.API GatewayからLambdaへの実行権限付与
Lambda関数に リソースベースポリシー を追加する。
具体的には、以下のようなポリシーを Lambda に追加する。
※一般的。Lambdaプロキシ統合を利用した場合に利用する。

aws lambda add-permission \
  --function-name your-lambda-function-name \
  --statement-id apigateway-access \
  --action lambda:InvokeFunction \
  --principal apigateway.amazonaws.com \
  --source-arn arn:aws:execute-api:{region}:{account-id}:{api-id}/*/*/*

GUIではリソースベースのポリシーステートメントに付与される。
※画像上記記載のロールはLambdaからCloudWatchLogsへログを出力するために使われるため別物。


2.API Gateway にIAMロールをアタッチして呼び出す
Lambda関数の実行ロール(IAM Role)に適切なポリシーを付与する。
API Gateway に明示的に IAM ロールを指定し、そのロールが lambda:InvokeFunction を持つようにする。

{
  "Effect": "Allow",
  "Action": "lambda:InvokeFunction",
  "Resource": "arn:aws:lambda:us-east-1:123456789012:function:MyFunction"
}

※Lambdaプロキシ統合をオフにした場合、実行ロールを入力する画面が表示される。



感想

酒を飲む以外のことはしたくない。