AWS SAM策略範本 - AWS Serverless Application Model

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AWS SAM策略範本

AWS Serverless Application Model (AWS SAM) 可讓您從政策範本清單中選擇,將 Lambda 函數和 AWS Step Functions 狀態機器的許可範圍限定在應用程式使用的資源。

AWS SAM 使用原則範本 AWS Serverless Application Repository 的應用程式不需要任何特殊的客戶確認,即可從. AWS Serverless Application Repository

若您希望申請增加新的政策範本,請執行以下動作:

  1. 針對專案分支中的原則來源檔案提交提取要求。develop AWS SAM GitHub 您可以在網站上的原始檔案中找到原始檔案。 GitHub

  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 授與叫用的 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 授予描述亞馬遜彈性運算雲端 (Amazon EC2) 執行個體的權限。
EcsRunTaskPolicy 授與啟動任務定義新任務的權限。
EFSWriteAccessPolicy 授與使用寫入存取權來掛接 Amazon EFS 檔案系統的權限。
EKSDescribePolicy 授予描述或列出 Amazon EKS 叢集的權限。
ElasticMapReduceAddJobFlowStepsPolicy 授與將新步驟新增至執行中叢集的權限。
ElasticMapReduceCancelStepsPolicy 授與取消擱置中步驟或執行中叢集中步驟的權限。
ElasticMapReduceModifyInstanceFleetPolicy 授與列出叢集中執行個體叢集的詳細資料和修改容量的權限。
ElasticMapReduceModifyInstanceGroupsPolicy 授與列出叢集中執行個體群組的詳細資料和修改設定的權限。
ElasticMapReduceSetTerminationProtectionPolicy 授與設定叢集終止保護的權限。
ElasticMapReduceTerminateJobFlowsPolicy 授與關閉叢集的權限。
ElasticsearchHttpPostPolicy 給予 POST 權限 Amazon OpenSearch 服務。
EventBridgePutEventsPolicy 授與將事件傳送至的權限 EventBridge。
FilterLogEventsPolicy 授與從指定 CloudWatch 記錄群組篩選記錄事件的權限。
FirehoseCrudPolicy 授予建立、寫入、更新和刪除 Firehose 傳送串流的權限。
FirehoseWritePolicy 授予寫入 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 精確應用程式端點的權限。
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 授予發送電子郵件,模板化電子郵件,模板化批量電子郵件和驗證身份的權限。
SESBulkTemplatedCrudPolicy_v2 授予傳送 Amazon SES 電子郵件、範本化電子郵件和範本化大量電子郵件的權限,以及驗證身分。
SESCrudPolicy 授予發送電子郵件和驗證身份的權限。
SESEmailTemplateCrudPolicy 授予建立、取得、列出、更新和刪除 Amazon SES 電子郵件範本的權限。
SESSendBouncePolicy SendBounce 授予亞馬遜簡易電子郵件服務 (Amazon SES) 身分識別的權限。
SNSCrudPolicy 授予建立、發佈和訂閱 Amazon SNS 主題的權限。
SNSPublishMessagePolicy 授予將訊息發佈至亞馬遜簡單通知服務 (Amazon SNS) 主題的權限。
SQSPollerPolicy 授予輪詢 Amazon Simple Queue Service (Amazon SQS) 佇列的權限。
SQSSendMessagePolicy 授予將訊息傳送至 Amazon SQS 佇列的權限。
SSMParameterReadPolicy 授予從 Amazon EC2 Systems Manager (SSM) 參數存放區存取參數的權限,以便在此帳戶中載入機密。當參數名稱沒有斜線前綴時使用。
SSMParameterWithSlashPrefixReadPolicy 授予從 Amazon EC2 Systems Manager (SSM) 參數存放區存取參數的權限,以便在此帳戶中載入機密。當參數名稱具有斜線前綴時使用。
StepFunctionsExecutionPolicy 授予啟動 Step Functions 狀態機器執行的權限。
TextractDetectAnalyzePolicy 允許訪問以檢測和分析使用亞馬遜文本提取的文檔。
TextractGetResultPolicy 允許從 Amazon 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: {}