https://a.storyblok.com/f/270183/40241/9336e09b09/e_aws-permissions_1200x600.png

AWS Lambdaにおけるパーミッションの仕組み

最終更新日 May 18, 2021

所要時間:1 分

AWS Lambdaで作業するとき、多くのユーザーは他のAWSサービスを使用するパーミッションに苦労する。具体的には、S3、RDS、Transcribeなどのサービスにアクセスする方法だ。

多くの場合 IAMユーザーを作成し AWS_ACCESS_KEY_IDそして AWS_SECRET_ACCESS_KEY環境変数.AWS SDK は、これらのキーまたは値を AWS 認証情報ファイル.(詳細は ドキュメントを参照してください)。しかし、Lambdaにこれらの認証情報を追加するのは間違いです。

身分違い

以下の .envファイルを実行すると、アプリケーションが Lambda 内から AWS サービスにアクセスできなくなります。接続の失敗は、IAMユーザーをどのように設定したかに関係なく発生します。

AWS_ACCESS_KEY_ID={{YOUR-ACCESS-KEY-HERE}} AWS_SECRET_ACCESS_KEY={{YOUR-SECRET-HERE}}

Lambda関数がデプロイされると、上記の環境変数がLambdaによって生成される。つまり .envの値は期待通りに設定されないということだ。

Serverlessを使ったデプロイの詳細については、以下をご覧ください。 BrefとServerless Frameworkを使ったPHPでのAWS Lambdaまたは AWS Lambda によるサーバーレス Python.

パーミッションの設定

環境変数 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYを設定することで、デプロイ時にロールのパーミッションも設定する必要がある。すべてのAWSサービスも、IAMユーザーの代わりにLambda関数で直接処理される。

以下は、Serverlessフレームワークを使用してAWS Lambda関数をデプロイするyamlの一部の例である。

provider:
    name: aws
    region: us-east-1
    runtime: provided
    iamRoleStatements:
        - Effect: Allow
          Action:
              - s3:PutObject
              - s3:GetObject
              - s3:DeleteObject
          Resource: 'arn:aws:s3:::bucket-name/*'
        - Effect: Allow
          Action: transcribe:*
          Resource: '*'

上の例の iamRoleStatementsブロックに注目してほしい。この中でラムダは s3:PutObject, s3:GetObjects3:DeleteObjectリソース bucket-nameへのアクセス権が付与されます。また、この関数は transcribe:*サービスにもアクセスできます。

上記の例は、以下の例でIAMパーミッションがどのように設定されるかに非常に似ている:

aws_iam_s3_policyAWS IAM S3 Policy Example

amazon_iam_transcribe_policyAWS IAM Transcribe Policy Example

パーミッションの検討

AWS Lambdaへのデプロイに成功すると、AWS Consoleで関数のアクティブな権限を確認できます。これを行うには、ファンクションコンソールの Permissions タブに移動します。

lambda_function_permissionsAWS Lambda Function Permissions

そこから各サービスのアクセス許可をクリックすると、設定方法の詳細が表示される。

次のページ

様々なAWSサービスに対する可能なパーミッションについてのドキュメントは AWS Identity and Access Management ドキュメント.また、これらのパーミッションを実際に使用する例については、今後の投稿をお楽しみに。

シェア:

https://a.storyblok.com/f/270183/384x384/b3c7ffaf85/adamculp.png
Adam Culpヴォネージの卒業生

アダムは開発者兼コンサルタントで、ウルトラランニング、ブログ、そして指導と支援への飽くなき欲求を持ちながら、他の人々が素晴らしいことを成し遂げるためにテクノロジーを手なずけるのを助けることを楽しんでいる。