本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon SAM策略模板
Amazon SAM允许您从策略模板列表中选择来将您的 Lambda 函数的权限范围限定为您的应用程序使用的资源。
Amazon SAM中的应用程序Amazon Serverless Application Repository使用策略模板不需要任何特殊的客户确认,即可从Amazon Serverless Application Repository.
如果要请求添加新的策略模板,请执行以下操作:
-
针对 policy_templates.json 源文件提交拉取请求
develop的分支Amazon SAM GitHub 项目。源文件在策略模板.json在 GitHub 网站。 -
在中提交问题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:策略模板不具有占位符值
以下示例包含 CloudWatchPutMetric策略 策略模板,该模板没有占位符值。
即使没有占位符值,也必须指定一个空对象,否则将导致错误。
MyFunction: Type: 'AWS::Serverless::Function' Properties: CodeUri: ${codeuri} Handler: hello.handler Runtime: python2.7 Policies: - CloudWatchPutMetricPolicy: {}
策略模板表
下表列出了可用的策略模板。
| 策略模板 | 描述 |
|---|---|
| AcmGetCertificatePolicy | 授予从中读取证书的权限Amazon Certificate Manager. |
| AMIDescribePolicy | 授予描述Amazon 系统映像 (AMI) 的权限。 |
| AthenaQuery策略 | 授予执行 Athena 查询的权限。 |
| AWSSecretsManagerGetSecretValuePolicy | 授予获取指定的 secret 值的权限Amazon Secrets Manager密钥。 |
| AWSSecretsManagerRotationPolicy | 授予在中轮换密钥的权限Amazon Secrets Manager. |
| CloudFormationDescribeStacks策略 | 授予描述权限Amazon CloudFormation堆栈。 |
| CloudWatchDashboardPolicy | 授予对指标进行操作的权限 CloudWatch控制面板。 |
| CloudWatchDescribeAlarmHistoryPolicy | 授予描述权限 CloudWatch 告警历史记录。 |
| CloudWatchPutMetric策略 | 授予权限以将指标发送到 CloudWatch. |
| CodeCommitCrudPolicy | 授予创建/读取/更新/删除特定对象的权限 CodeCommit 存储库。 |
| CodeCommitReadPolicy | 授予读取特定对象的权限 CodeCommit存储库。 |
| CodePipelineLambdaExecution策略 | 授予由调用的 Lambda 函数的权限 CodePipeline 以报告任务的状态。 |
| CodePipelineReadOnly策略 | 授予对获取有关详细信息的读取权限 CodePipeline 管道。 |
| ComprehendBasicAccessPolicy | 授予检测实体、关键短语、语言和情绪的权限。 |
| CostExplorerReadOnly策略 | 为账单历史记录的只读Cost Explorer API 授予只读权限。 |
| DynamoDBBackupFullAccessPolicy | 授予对表进行 DynamoDB 按需备份的读写权限。 |
| DynamoDBCrudPolicy | 授予对 Amazon DynamoDB 表的创建、读取、更新和删除权限。 |
| DynamoDBReadPolicy | 授予对 DynamoDB 表的只读权限。 |
| DynamoDBReconfigurePolicy | 授予重新配置 DynamoDB 表的权限。 |
| DynamoDBRestoreFromBackupPolicy | 授予从备份还原 DynamoDB 表的权限。 |
| DynamoDBStreamRead策略 | 授予描述和读取 DynamoDB 流和记录的权限。 |
| DynamoDBWritePolicy | 授予对 DynamoDB 表的只写权限。 |
| EC2CopyImage策略 | 授予复制 Amazon EC2 映像的权限。 |
| EC2DescribePolicy | 授予描述Amazon EElastic Compute Cloud (Amazon EC2) |
| EcsRunTaskPolicy | 授予权限以启动任务定义的新任务。 |
| EFSWriteAccess策略 | 授予挂载具有写入权限的 Amazon EFS 文件系统的权限。 |
| EKSDescribePolicy | 授予描述或列出 Amazon EKS 集群的权限。 |
| ElasticMapReduceAddJobFlowStepsPolicy | 授予权限以将新步骤添加到运行的集群中。 |
| ElasticMapReduceCancelStepsPolicy | 授予权限以取消运行的集群中的一个或多个待处理步骤。 |
| ElasticMapReduceModifyInstanceFleet策略 | 授予列出集群中实例队列详细信息和修改容量的权限。 |
| ElasticMapReduceModifyInstanceGroups策略 | 授予列出集群中实例组的详细信息和修改设置的权限。 |
| ElasticMapReduceSetTerminationProtectionPolicy | 授予权限以设置集群的终止保护。 |
| ElasticMapReduceTerminateJobFlows策略 | 授予以下权限以关闭集群的权限。 |
| ElasticsearchHttpPostPolicy | 向亚马逊授予 POST 权限 OpenSearch 服务 。 |
| EventBridgePutEvents策略 | 授予将事件发送到的权限 EventBridge. |
| FilterLogEventsPolicy | 授予筛选权限 CloudWatch 记录指定日志组的事件。 |
| FirehoseCrud策略 | 授予创建、写入、更新和删除 Kinesis Data Firehose 传输流的权限。 |
| FirehoseWrite策略 | 授予写入到 Kinesis Data Firehose 传输流的权限。 |
| KinesisCrud策略 | 授予创建、发布和删除 Amazon Kinesis 直播的权限。 |
| KinesisStreamReadPolicy | 授予列出并阅读 Amazon Kinesis 流的权限。 |
| 自杀DecryptPolicy | 授予使用解密的权限Amazon Key Management Service(Amazon KMS) 键。 |
| 自杀EncryptPolicy | 授予使用加密的权限Amazon Key Management Service(Amazon KMS) 键。 |
| LambdaInvoke策略 | 授予调用Amazon Lambda函数、别名或版本。 |
| MobileAnalyticsWriteOnlyAccessPolicy | 授予对所有应用程序资源放置事件数据的只写权限。 |
| OrganizationsListAccountsPolicy | 授予列出子账户名称和 ID 的只读权限。 |
| PinpointEndpointAccessPolicy | 授予为 Amazon Pinpoint 应用程序获取并更新终端节点的权限。 |
| PollyFullAccessPolicy | 授予对 Amazon Polly 词典资源的完全访问权限。 |
| RekognitionDetectOnlyPolicy | 授予检测面部、标签和文本的权限。 |
| RekognitionFacesManagementPolicy | 授予在Amazon Rekognition 系列中添加、删除和搜索人脸的权限。 |
| RekognitionFaces策略 | 授予比较并检测面部和标签的权限。 |
| RekognitionLabels策略 | 授予检测对象和审核标签的权限。 |
| RekognitionNoDataAccess策略 | 授予比较并检测面部和标签的权限。 |
| RekognitionRead策略 | 授予列出和搜索人脸的权限。 |
| RekognitionWriteOnlyAccess策略 | 授予创建集合和索引人脸的权限。 |
| Route53ChangeResourceRecordSets策略 | 授予更改 Route 53 中的资源记录集的权限。 |
| S3CrudPolicy | 授予创建、读取、更新和删除权限,以便对 Amazon S3 存储桶中的数据元执行操作。 |
| S3FullAccess策略 | 授予对 Amazon S3 存储桶中的对象执行操作的完全访问权限。 |
| S3ReadPolicy | 授予对 Amazon Simple Storage Service (Amazon S3) 存储桶中的只读权限。 |
| S3WritePolicy | 授予写入到 Amazon S3 存储桶的写权限。 |
| SageMakerCreateEndpointConfigPolicy | 授予权限以在 SageMaker. |
| SageMakerCreateEndpoint策略 | 授予权限以在 SageMaker. |
| ServerlessRepoReadWriteAccessPolicy | 授予在Amazon Serverless Application Repository服务。 |
| SESBulkTemplatedCrudPolicy | 授予发送电子邮件、模板化电子邮件、模板化批量电子邮件和验证身份的权限。 |
| SESCrudPolicy | 授予发送电子邮件和验证身份的权限。 |
| SESEmailTemplateCrudPolicy | 授予创建、获取、列出、更新和删除 Amazon SES 电子邮件模板的权限。 |
| SESSendBounce策略 | 给 SendBounce 授予对Amazon SSimple Email Service (Amazon SES) |
| SNSCrudPolicy | 授予创建、发布和订阅 Amazon SNS 主题的权限。 |
| SNSPublishMessage策略 | 授予权限以发布消息到 Amazon Simple Notification Service (Amazon SNS) 主题。 |
| SQSPollerPolicy | 授予轮询Amazon Simple Queueue Service (Amazon SQS |
| SQSSendMessage策略 | 授予将消息发送到 Amazon SQS 队列的权限。 |
| SSMParameterRead策略 | 授予访问来自 Amazon EC2 Systems Manager (SSM) 参数存储的参数的权限,以便在此账户中加载密钥。 |
| StepFunctionsExecutionPolicy | 授予开始执行 Step Functions 状态机的权限。 |
| TextractDetectAnalyzePolicy | 允许使用 Amazon Textract 检测和分析文档。 |
| TextractGetResultPolicy | 允许从 Amazon Textract 获取检测到和分析的文档。 |
| TextractPolicy | 授予对Amazon Textract ect 的完全访问权限 |
| VPCAccessPolicy | 授予创建、删除、描述和分离弹性网络接口的权限。 |
问题排查
SAM CLI 错误:“必须为策略模板指定有效的参数值 '<policy-template-name>'”
执行 sam build 时,您会看到以下错误:
"Must specify valid parameter values for policy template '<policy-template-name>'"
这意味着您在声明没有任何占位符值的策略模板时没有传递空对象。
要解决此问题,请声明该策略,如以下示例所示CloudWatchPutMetric策略.
MyFunction: Policies: - CloudWatchPutMetricPolicy: {}