AWS SAM ポリシーテンプレート - AWS Serverless Application Model

AWS SAM ポリシーテンプレート

AWS SAM では、ポリシーテンプレートのリストから選択して、Lambda 関数の許可の範囲をアプリケーションが使用するリソースに絞り込むことができます。

ポリシーテンプレートを使用する AWS SAM の AWS Serverless Application Repository アプリケーションには、AWS Serverless Application Repository からのアプリケーションのデプロイに特別なお客様の承認は必要ありません。

新しいポリシーテンプレートの追加をリクエストしたい場合は、以下を実行します。

  1. develop GitHub プロジェクトの AWS SAM ブランチにある policy_templates.json ソースファイルに対してプルリクエストを送信します。このソースファイルは、GitHub ウェブサイトの policy_templates.json にあります。

  2. プルリクエストの理由と、リクエストへのリンクが含まれる、AWS SAM​ GitHub プロジェクトの問題を送信します。新しい問題を送信するには、AWS Serverless Application Model: 問題リンクを使用してください。

構文

AWS SAM テンプレートファイルで指定する各ポリシーテンプレートには、常にポリシーテンプレートのプレースホルダ値が含まれるオブジェクトを指定する必要があります。ポリシーテンプレートにプレースホルダ値が必要ない場合は、空のオブジェクトを指定する必要があります。

YAML

MyFunction: Type: AWS::Serverless::Function Properties: Policies: - PolicyTemplateName1: # Policy template with placeholder value Key1: Value1 - PolicyTemplateName2: {} # Policy template with no placeholder value

例 1: プレースホルダー値が含まれるポリシーテンプレート

以下の例は、SQSPollerPolicy ポリシーテンプレートがリソースとして QueueName を期待する例です。AWS SAM テンプレートは、「MyQueue」Amazon SQS キューの名前を取得します。これは、同じアプリケーション内で作成する、またはアプリケーションに対するパラメータとしてリクエストすることができます。

MyFunction: Type: 'AWS::Serverless::Function' Properties: CodeUri: ${codeuri} Handler: hello.handler Runtime: python2.7 Policies: - SQSPollerPolicy: QueueName: !GetAtt MyQueue.QueueName

例 2: プレースホルダー値が含まれないポリシーテンプレート

以下の例には、プレースホルダー値がない CloudWatchPutMetricPolicy ポリシーテンプレートが含まれています。

注記

プレースホルダ値がない場合でも、空のオブジェクトを指定する必要があります。指定されない場合は、エラーが発生します。

MyFunction: Type: 'AWS::Serverless::Function' Properties: CodeUri: ${codeuri} Handler: hello.handler Runtime: python2.7 Policies: - CloudWatchPutMetricPolicy: {}

ポリシーテンプレート表

以下は、使用可能なポリシーテンプレートの表です。

ポリシーテンプレート 説明
AcmGetCertificatePolicy AWS Certificate Manager から証明書を読み取る許可を付与します。
AMIDescribePolicy Amazon マシンイメージ (AMI) を記述する許可を付与します。
AthenaQueryPolicy Athena クエリを実行する許可を付与します。
AWSSecretsManagerGetSecretValuePolicy 指定された AWS Secrets Manager シークレットのシークレット値を取得する許可を付与します。
AWSSecretsManagerRotationPolicy AWS Secrets Manager のシークレットをローテーションを行う許可を付与します。
CloudFormationDescribeStacksPolicy AWS CloudFormation スタックを記述する許可を付与します。
CloudWatchDashboardPolicy CloudWatch ダッシュボードで操作を行うためのメトリクスを配置する許可を付与します。
CloudWatchDescribeAlarmHistoryPolicy CloudWatch アラーム履歴を記述する許可を付与します。
CloudWatchPutMetricPolicy CloudWatch にメトリクスを送信する許可を付与します。
CodeCommitCrudPolicy 特定の CodeCommit リポジトリ内にあるオブジェクトを作成/読み取り/更新/削除する許可を付与します。
CodeCommitReadPolicy 特定の CodeCommit リポジトリ内にあるオブジェクトを読み取る許可を付与します。
CodePipelineLambdaExecutionPolicy CodePipeline によって呼び出された Lambda 関数がジョブのステータスを報告するための許可を付与します。
CodePipelineReadOnlyPolicy CodePipeline パイプラインの詳細を取得するための読み取り許可を付与します。
ComprehendBasicAccessPolicy エンティティ、キーフレーズ、言語、およびセンチメントを検出する許可を付与します。
CostExplorerReadOnlyPolicy 請求履歴の読み取り専用 Cost Explorer API に読み取り専用許可を付与します。
DynamoDBBackupFullAccessPolicy テーブルの DynamoDB オンデマンドバックアップに読み取りおよび書き込み許可を付与します。
DynamoDBCrudPolicy Amazon DynamoDB テーブルに作成、読み取り、更新、および削除許可を付与します。
DynamoDBReadPolicy DynamoDB テーブルに読み取り専用許可を付与します。
DynamoDBReconfigurePolicy DynamoDB テーブルを再構成する許可を付与します。
DynamoDBRestoreFromBackupPolicy バックアップから DynamoDB テーブルを復元する許可を付与します。
DynamoDBStreamReadPolicy DynamoDB のストリームとレコードを記述および読み取る許可を付与します。
DynamoDBWritePolicy DynamoDB テーブルに書き込み専用許可を付与します。
EC2CopyImagePolicy Amazon EC2 イメージをコピーする許可を付与します
EC2DescribePolicy Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを記述する許可を付与します。
EcsRunTaskPolicy タスク定義の新しいタスクを開始する許可を付与します。
EFSWriteAccessPolicy 書き込みアクセス権と共に Amazon EFS ファイルシステムをマウントする許可を付与します。
EKSDescribePolicy Amazon EKS クラスターを記述またはリスト化する許可を付与します。
ElasticMapReduceAddJobFlowStepsPolicy 実行中のクラスターに新しいステップを追加する許可を付与します。
ElasticMapReduceCancelStepsPolicy 実行中のクラスターで保留中のステップ (1 つ、または複数) をキャンセルする許可を付与します。
ElasticMapReduceModifyInstanceFleetPolicy クラスター内のインスタンスフリートの詳細をリスト化し、容量を変更する許可を付与します。
ElasticMapReduceModifyInstanceGroupsPolicy クラスター内のインスタンスグループの詳細をリスト化し、設定を変更する許可を付与します。
ElasticMapReduceSetTerminationProtectionPolicy クラスターの終了保護を設定する許可を付与します。
ElasticMapReduceTerminateJobFlowsPolicy クラスターをシャットダウンする許可を付与します。
ElasticsearchHttpPostPolicy Amazon OpenSearch Service に POST 許可を付与します。
EventBridgePutEventsPolicy EventBridge にイベントを送信する許可を付与します。
FilterLogEventsPolicy 指定されたロググループからの CloudWatch Logs イベントをフィルタリングする許可を付与します。
FirehoseCrudPolicy Kinesis Data Firehose の配信ストリームを作成、書き込み、更新、および削除するための許可を付与します
FirehoseWritePolicy Kinesis Data Firehose の配信ストリームに書き込む許可を付与します
KinesisCrudPolicy Amazon Kinesis のストリームを作成、発行、および削除する許可を付与します。
KinesisStreamReadPolicy Amazon Kinesis のストリームをリスト化して読み取る許可を付与します。
KMSDecryptPolicy AWS Key Management Service (AWS KMS) キーを使用して復号化する許可を付与します。
KMSEncryptPolicy AWS Key Management Service (AWS KMS) キーを使用して暗号化する許可を付与します。
LambdaInvokePolicy AWS Lambda 関数、エイリアス、またはバージョンを呼び出す許可を付与します。
MobileAnalyticsWriteOnlyAccessPolicy すべてのアプリケーションリソースのイベントデータを配置するための書き込み専用許可を付与します。
OrganizationsListAccountsPolicy 子アカウントの名前と ID を一覧表示する読み取り専用許可を付与します。
PinpointEndpointAccessPolicy Amazon Pinpoint アプリケーションのエンドポイントを取得して更新する許可を付与します
PollyFullAccessPolicy Amazon Polly のレキシコンリソースへのフルアクセス許可を付与します。
RekognitionDetectOnlyPolicy 顔、ラベル、およびテキストを検出する許可を付与します。
RekognitionFacesManagementPolicy Amazon Rekognition コレクション内の顔を追加、削除、および検索する許可を付与します。
RekognitionFacesPolicy 顔とラベルを比較および検出する許可を付与します。
RekognitionLabelsPolicy オブジェクトとモデレーションラベルを検出する許可を付与します。
RekognitionNoDataAccessPolicy 顔とラベルを比較および検出する許可を付与します。
RekognitionReadPolicy 顔をリスト化して検索する許可を付与します。
RekognitionWriteOnlyAccessPolicy 顔のコレクションを作成してインデックス化する許可を付与します。
Route53ChangeResourceRecordSetsPolicy Route 53 のリソースレコードセットを変更する許可を付与します。
S3CrudPolicy Amazon S3 バケット内のオブジェクトでアクションを実行するための作成、読み取り、更新、および削除許可を付与します。
S3FullAccessPolicy Amazon S3 バケット内のオブジェクトでアクションを実行するためのフルアクセス許可を付与します。
S3ReadPolicy Amazon Simple Storage Service (Amazon S3) バケットにあるオブジェクトを読み取るための読み取り専用許可を付与します。
S3WritePolicy Amazon S3 バケットにオブジェクトを書き込むための書き込み許可を付与します。
SageMakerCreateEndpointConfigPolicy SageMaker でエンドポイント設定を作成する許可を付与します。
SageMakerCreateEndpointPolicy SageMaker でエンドポイントを作成する許可を付与します。
ServerlessRepoReadWriteAccessPolicy AWS Serverless Application Repository サービスでアプリケーションを作成してリスト化する許可を付与します。
SESBulkTemplatedCrudPolicy E メール、テンプレート化された E メール、テンプレート化されたバルク E メールを送信し、アイデンティティを確認する許可を付与します。
SESCrudPolicy E メールを送信し、アイデンティティを確認する許可を付与します。
SESEmailTemplateCrudPolicy Amazon SES E メールテンプレートを作成、取得、リスト化、更新、および削除する許可を付与します。
SESSendBouncePolicy Amazon Simple Email Service (Amazon SES) アイデンティティに SendBounce 許可を付与します。
SNSCrudPolicy Amazon SNS トピックを作成、公開、およびサブスクライブする許可を付与します。
SNSPublishMessagePolicy Amazon Simple Notification Service (Amazon SNS) トピックにメッセージを発行する許可を付与します。
SQSPollerPolicy Amazon Simple Queue Service (Amazon SQS) キューをポーリングする許可を付与します。
SQSSendMessagePolicy Amazon SQS キューにメッセージを送信する許可を付与します。
SSMParameterReadPolicy このアカウントのシークレットをロードするために、Amazon EC2 Systems Manager (SSM) パラメータストアからのパラメータにアクセスする許可を付与します。
StepFunctionsExecutionPolicy Step Functions ステートマシンの実行を開始する許可を付与します。
TextractDetectAnalyzePolicy Amazon Textract でドキュメントを検出して分析するためのアクセス権を付与します。
TextractGetResultPolicy 検出および分析されたドキュメントを Amazon Textract から取得するためのアクセス権を付与します。
TextTractPolicy Amazon Textract へのフルアクセス権を付与します。
VPCAccessPolicy Elastic Network Interface を作成、削除、記述、およびデタッチするアクセス権を付与します。

トラブルシューティング

SAM CLI エラー:「Must specify valid parameter values for policy template '<policy-template-name>」

sam build の実行時に、以下のエラーが表示されます。

"Must specify valid parameter values for policy template '<policy-template-name>'"
            

これは、プレースホルダ値がないポリシーテンプレートを宣言したときに、空のオブジェクトが渡されなかったことを意味します。

これを修正するには、以下の CloudWatchPutMetricPolicy 例のようにポリシーを宣言します。

MyFunction: Policies: - CloudWatchPutMetricPolicy: {}