Amazon SAM策略模板 - Amazon Serverless Application Model
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon SAM策略模板

Amazon Serverless Application Model(Amazon SAM) 允许您从策略模板列表中进行选择,将您的 Lambda 函数和Amazon Step Functions状态机的权限范围限定为应用程序使用的资源。

Amazon SAM使用策略模板Amazon Serverless Application Repository的应用程序不需要任何特殊的客户确认即可从中部署应用程序Amazon Serverless Application Repository。

如果要请求添加新的策略模板,请执行以下操作:

  1. 针对Amazon SAM GitHub 项目develop分支中的 policy_templates.json 源文件提交拉取请求。你可以在 GitHub 网站上的 p olicy_templates.json 中找到源文件。

  2. 在Amazon SAM GitHub 项目中提交问题,包括提交请求的原因和请求链接。使用此链接提交新问题 Amazon Serverless Application Model:问题

语法

对于您在模板文件中指定的每个策略Amazon 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 作为资源。该Amazon 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 授予从中读取证书的权限Amazon Certificate Manager。
AMIDescribePolicy 授予权限以描述Amazon 系统映像 (AMI) 的权限。
AthenaQueryPolicy 授予执行 Athena 查询的权限。
AWSSecretsManagerGetSecretValuePolicy 授予获取指定Amazon Secrets Manager密钥的密钥值的权限。
AWSSecretsManagerRotationPolicy 授予轮换机密的权限Amazon Secrets Manager。
CloudFormationDescribeStacksPolicy 授予描述Amazon CloudFormation堆栈的权限。
CloudWatchDashboardPolicy 授予在 CloudWatch 仪表板上运行指标的权限。
CloudWatchDescribeAlarmHistoryPolicy 授予描述 CloudWatch 警报历史记录的权限。
CloudWatchPutMetricPolicy 授予向发送指标的权限 CloudWatch。
CodeCommitCrudPolicy 授予在特定 CodeCommit存储库中创建/读取/更新/删除对象的权限。
CodeCommitReadPolicy 授予读取特定 CodeCommit 存储库中对象的权限。
CodePipelineLambdaExecutionPolicy 为调用的 Lambda 函数 CodePipeline 提供报告任务状态的权限。
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 授予权限以描述亚马逊Elastic Compute Cloud (Amazon EC2) 实例。
EcsRunTaskPolicy 授予权限以启动任务定义。
EFSWriteAccessPolicy 授予权限以挂载具有写入 Amazon EFS 文件系统的权限。
EKSDescribePolicy 授予描述或列出 Amazon EKS 集群的权限。
ElasticMapReduceAddJobFlowSteps政策 授予权限以将新步骤添加到运行的集群中。
ElasticMapReduceCancelStepsPolicy 授予权限以取消运行的集群中的一个或多个待处理步骤。
ElasticMapReduceModifyInstanceFleetPolicy 授予列出集群内实例队列的详细信息和修改容量的权限。
ElasticMapReduceModifyInstanceGroupsPolicy 授予列出集群内实例组的详细信息和修改设置的权限。
ElasticMapReduceSetTerminationProtectionPolicy 授予权限以为集群设置终止保护。
ElasticMapReduceTerminateJobFlowsPolicy 授予权限以关闭集群的权限。
ElasticsearchHttpPostPolicy 向亚马逊 OpenSearch 服务授予 POST 权限。
EventBridgePutEventsPolicy 授予向发送事件的权限 EventBridge。
FilterLogEventsPolicy 授予筛选来自指定 CloudWatch 日志组的日志事件的权限。
FirehoseCrudPolicy 授予权限以创建、写入、更新和删除 Kinesis Data Firehose 传输流。
FirehoseWritePolicy 授予权限以写入 Kinesis Data Firehose 传输流。
KinesisCrudPolicy 授予创建、发布和删除Amazon Kinesis 直播的权限。
KinesisStreamReadPolicy 授予权限以列出和阅读Amazon Kinesis Kinesis 流。
KMSDecryptPolicy 授予使用Amazon Key Management Service (Amazon KMS) 密钥解密的权限。
KMSEncryptPolicy 授予使用Amazon Key Management Service (Amazon KMS) 密钥加密的权限。
LambdaInvokePolicy 授予调用Amazon Lambda函数、别名或版本的权限。
MobileAnalyticsWriteOnlyAccessPolicy 授予只写权限,以放置所有应用程序资源的事件数据。
OrganizationsListAccountsPolicy 授予列出子账户名和 ID 的只读权限。
PinpointEndpointAccessPolicy 授予权限以获取和更新 Amazon Pinpinpoint 应用程序的终端节点。
PollyFullAccessPolicy 授予对Amazon Polly 词典资源的完全访问权限。
RekognitionDetectOnlyPolicy 授予检测人脸、标签和文字的权限。
RekognitionFacesManagementPolicy 授予在Amazon Rekognition 集合中添加、删除和搜索人脸的权限。
RekognitionFacesPolicy 授予比较和检测人脸和标签的权限。
RekognitionLabelsPolicy 授予检测对象和审核标签的权限。
RekognitionNoDataAccessPolicy 授予比较和检测人脸和标签的权限。
RekognitionReadPolicy 授予列出和搜索面孔的权限。
RekognitionWriteOnlyAccessPolicy 授予创建集合和索引人脸的权限。
Route53ChangeResourceRecordSetsPolicy 授予更改 Route 53 中的资源记录集的权限。
S3CrudPolicy 授予创建、读取、更新和删除权限,以对 Amazon S3 存储桶中的对象进行操作。
S3FullAccessPolicy 授予对 Amazon S3 存储桶中的对象进行操作的完全访问权限。
S3ReadPolicy 授予只读Amazon Simp存储服务 (Amazon S3) 存储桶中的对象的只读权限。
S3WritePolicy 授予写入 Amazon S3 存储桶的权限。
SageMakerCreateEndpointConfigPolicy 授予权限以在中创建终端节点配置 SageMaker。
SageMakerCreateEndpointPolicy 授予在中创建端点的权限 SageMaker。
ServerlessRepoReadWriteAccessPolicy 授予在Amazon Serverless Application Repository服务中创建和列出应用程序的权限。
SESBulkTemplatedCrudPolicy 授予发送电子邮件、模板化电子邮件、模板化批量电子邮件和验证身份的权限。
SESBulkTemplatedCrudPolicy _v2 授予发送 Amazon SES 电子邮件、模板化电子邮件和模板化批量电子邮件以及验证身份的权限。
SESCrudPolicy 授予发送电子邮件和验证身份的权限。
SESEmailTemplateCrudPolicy 授予创建、获取、列出、更新和删除 Amazon SES 电子邮件模板的权限。
SESSendBouncePolicy SendBounce 授予权限以获取Amazon SSimple Email Service (Amazon SES) 身份。
SNSCrudPolicy 授予创建、发布和订阅 Amazon SNS 主题的权限。
SNSPublishMessagePolicy 授予权限以将消息发布到 Amazon SimpSimple Notification Service (Amazon SNS) 主题。
SQSPollerPolicy 授予权限以轮询AAmazon Simple Queue Service (Amazon SQS) 队列。
SQSSendMessagePolicy 授予权限以将消息发送到 Amazon SQS 队列。
SSMParameterReadPolicy 授予访问来自 Amazon EC2 Systems Manager (SSM) 参数存储的参数以在此账户中加载密钥的权限。在参数名称没有斜杠前缀时使用。
SSMParameterWithSlashPrefixReadPolicy 授予访问来自 Amazon EC2 Systems Manager (SSM) 参数存储的参数以在此账户中加载密钥的权限。在参数名称有斜杠前缀时使用。
StepFunctionsExecutionPolicy 授予权限以开始执行 Step Functions 状态机。
TextractDetectAnalyzePolicy 允许使用亚马逊 Textract 检测和分析文档。
TextractGetResultPolicy 允许从亚马逊 Textract 获取检测和分析文档。
TextractPolicy 提供对Amazon Textract的完全访问权限
VPCAccessPolicy 提供创建、删除、描述和分离弹性网络接口的权限。

问题排查

SAM CLI 错误:“必须为策略模板'<policy-template-name >'指定有效的参数值”

执行 sam build 时,您会看到以下错误:

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

这意味着您在声明没有任何占位符值的策略模板时没有传递空对象。

要解决此问题,请像以下示例一样声明策略CloudWatchPutMetricPolicy

MyFunction: Policies: - CloudWatchPutMetricPolicy: {}