本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon SAM策略模板
Amazon Serverless Application Model(Amazon SAM) 允许您从策略模板列表中进行选择,将您的 Lambda 函数和Amazon Step Functions状态机的权限范围限定为应用程序使用的资源。
Amazon SAM使用策略模板Amazon Serverless Application Repository的应用程序不需要任何特殊的客户确认即可从中部署应用程序Amazon Serverless Application Repository。
如果要请求添加新的策略模板,请执行以下操作:
-
针对Amazon SAM GitHub 项目
develop分支中的 policy_templates.json 源文件提交拉取请求。你可以在 GitHub 网站上的 p olicy_templates.json中找到源文件。 -
在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: {}