使用 IAM 角色授予專案 AWS 資源的存取權 - Amazon CodeCatalyst

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

使用 IAM 角色授予專案 AWS 資源的存取權

CodeCatalyst 可以通過連接到 CodeCatalyst 空間 AWS 帳戶 來訪問 AWS 資源。然後,您可以建立下列服務角色,並在連線帳戶時建立關聯這些角色。

如需有關您在 JSON 政策中使用之元素的詳細資訊,請參閱 IAM 使用者指南中的 IAM JSON 政策元素參考

  • 若要存取 CodeCatalyst 專案和工作流程中的資源,您必須先授與權限, CodeCatalyst 才能代表您存取這些資源。 AWS 帳戶 若要這麼做,您必須在連線的服務角色中建立 AWS 帳戶 CodeCatalyst可代表空間中的使用者和專案承擔的服務角色。您可以選擇建立和使用CodeCatalystWorkflowDevelopmentRole-spaceName服務角色,也可以建立自訂服務角色並手動設定這些 IAM 政策和角色。最佳作法是為這些角色指派最少的必要權限。

    注意

    若為自訂服務角色,則需要 CodeCatalyst 服務主體。如需有關 CodeCatalyst 服務主體和信任模型的詳細資訊,請參閱了解 CodeCatalyst 信任模型

  • 若要透過連線來管理空間的支援 AWS 帳戶,您可以選擇建立和使用允許使用 CodeCatalyst 者存取支援的AWSRoleForCodeCatalystSupport服務角色。如需 CodeCatalyst 空間支援的更多資訊,請參閱AWS Support對於 Amazon CodeCatalyst

了解服CodeCatalystWorkflowDevelopmentRole-spaceName務角色

您可以為您的空間新增 IAM 角色, CodeCatalyst 以便在已連線中建立和存取資源 AWS 帳戶。這稱為服務角色。建立服務角色的最簡單方法是在建立空間時新增一個角色,並選擇該角色的CodeCatalystWorkflowDevelopmentRole-spaceName選項。這不僅會建立AdministratorAccess附加的服務角色,而且還會建立信任原則,以 CodeCatalyst 便代表空間中專案中的使用者承擔角色。服務角色的範圍是空間,而不是個別專案。若要建立角色,請參閱為您的帳戶和空間建立CodeCatalystWorkflowDevelopmentRole-spaceName角色。您只能為每個帳戶中的每個空間建立一個角色。

注意

此角色僅建議與開發帳戶搭配使用,並使用AdministratorAccess AWS 受管理的策略,讓其具有完整存取權,以便在其中建立新政策和資源 AWS 帳戶。

附加至CodeCatalystWorkflowDevelopmentRole-spaceName角色的原則旨在處理使用空間中使用藍圖建立的專案。它允許這些項目中的用戶使用連接中的資源開發,構建,測試和部署代碼 AWS 帳戶。如需詳細資訊,請參閱建立 AWS 服務的角色

附加到CodeCatalystWorkflowDevelopmentRole-spaceName角色的策略是中的AdministratorAccess受管理策略 AWS。這是一項政策,可授與所有 AWS 動作和資源的完整存取權。若要在 IAM 主控台中檢視 JSON 政策文件,請參閱AdministratorAccess

下列信任原則 CodeCatalyst 允許CodeCatalystWorkflowDevelopmentRole-spaceName扮演角色。如需 CodeCatalyst 信任模型的詳細資訊,請參閱了解 CodeCatalyst 信任模型

"Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:codecatalyst:::space/spaceId/project/*" } } } ]

為您的帳戶和空間建立CodeCatalystWorkflowDevelopmentRole-spaceName角色

請依照下列步驟建立將用於空間中工作流程的CodeCatalystWorkflowDevelopmentRole-spaceName角色。對於要在專案中使用 IAM 角色的每個帳戶,您必須新增一個角色,例如開發人員角色。

在開始之前,您必須具有您的管理權限, AWS 帳戶 或能夠與您的管理員合作。如需中如何使用 AWS 帳戶 和 IAM 角色的詳細資訊 CodeCatalyst,請參閱允許存取已連線 AWS 的資源 AWS 帳戶

若要建立並新增 CodeCatalyst CodeCatalystWorkflowDevelopmentRole-spaceName
  1. 在 CodeCatalyst 主控台中啟動之前,請開啟 AWS Management Console,然後確定您已使用相同 AWS 帳戶 的空間登入。

  2. 請在以下位置開啟 CodeCatalyst 主控台。 https://codecatalyst.aws/

  3. 導覽至您的 CodeCatalyst 空間。選擇 Settings (設定),然後選擇 AWS 帳戶

  4. 選擇您要建立角色之 AWS 帳戶 位置的連結。AWS 帳戶 詳細資訊頁面隨即顯示。

  5. 選擇 [管理角色來源] AWS Management Console

    將 IAM 角色新增至 Amazon CodeCatalyst 空間頁面會在中開啟 AWS Management Console。這是 Amazon CodeCatalyst 空間頁面。您可能需要登錄才能訪問該頁面。

  6. 選擇在 IAM 中建立 CodeCatalyst 開發管理員角色。此選項會建立包含開發角色之權限原則和信任原則的服務角色。該角色將具有一個名稱CodeCatalystWorkflowDevelopmentRole-spaceName。如需有關角色和角色原則的詳細資訊,請參閱了解服CodeCatalystWorkflowDevelopmentRole-spaceName務角色

    注意

    此角色僅建議與開發人員帳戶搭配使用,並使用AdministratorAccess AWS 受管理的政策,讓其具有完整存取權,以便在其中建立新政策和資源 AWS 帳戶。

  7. 選擇 [建立開發角色]。

  8. 在「連線」頁面的「可用的 IAM 角色」下 CodeCatalystCodeCatalystWorkflowDevelopmentRole-spaceName,檢視新增至您帳戶的 IAM 角色清單中的角色。

  9. 要返回您的空間,請選擇前往 Amazon CodeCatalyst

了解服AWSRoleForCodeCatalystSupport務角色

您可以為空間新增 IAM 角色,空間中的使用 CodeCatalyst 者可以用來建立和存取支援案例。這稱為支援服務角色。建立支援服務角色的最簡單方法是在建立空間並選擇該角色的AWSRoleForCodeCatalystSupport選項時新增一個角色。這不僅會建立原則和角色,還會建立信任原則,以 CodeCatalyst 便代表空間中專案中的使用者擔任角色。服務角色的範圍是空間,而不是個別專案。若要建立角色,請參閱為您的帳戶和空間建立AWSRoleForCodeCatalystSupport角色

附加至AWSRoleForCodeCatalystSupport角色的原則是受管理的原則,可提供支援權限的存取權。如需詳細資訊,請參閱 AWS 受管政策:AmazonCodeCatalystSupportAccess

策略的信任角色允 CodeCatalyst 許擔任該角色。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "codecatalyst.amazonaws.com", "codecatalyst-runner.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

為您的帳戶和空間建立AWSRoleForCodeCatalystSupport角色

請依照下列步驟建立將AWSRoleForCodeCatalystSupport用於您空間中支援案例的角色。角色必須新增至空間的指定帳單帳戶。

在開始之前,您必須具有您的管理權限, AWS 帳戶 或能夠與您的管理員合作。如需中如何使用 AWS 帳戶 和 IAM 角色的詳細資訊 CodeCatalyst,請參閱允許存取已連線 AWS 的資源 AWS 帳戶

若要建立並新增 CodeCatalyst AWSRoleForCodeCatalystSupport
  1. 在 CodeCatalyst 主控台中啟動之前,請開啟 AWS Management Console,然後確定您已使用相同 AWS 帳戶 的空間登入。

  2. 導覽至您的 CodeCatalyst 空間。選擇 Settings (設定),然後選擇 AWS 帳戶

  3. 選擇您要建立角色之 AWS 帳戶 位置的連結。AWS 帳戶 詳細資訊頁面隨即顯示。

  4. 選擇 [管理角色來源] AWS Management Console

    將 IAM 角色新增至 Amazon CodeCatalyst 空間頁面會在中開啟 AWS Management Console。這是 Amazon CodeCatalyst 空間頁面。您可能需要登入才能存取此頁面。

  5. CodeCatalyst 空間詳細資料下,選擇新增 S CodeCatalyst upport 角色。此選項會建立包含預覽開發角色的權限原則和信任原則的服務角色。該角色將具有附加唯AWSRoleForCodeCatalystSupport一標識符的名稱。如需有關角色和角色原則的詳細資訊,請參閱了解服AWSRoleForCodeCatalystSupport務角色

  6. 在 [新增 Sup CodeCatalyst port 角色] 頁面上,保持選取的預設值,然後選擇 [建立角色]。

  7. 在「可用的 IAM 角色」下 CodeCatalystCodeCatalystWorkflowDevelopmentRole-spaceName,檢視新增至您帳戶的 IAM 角色清單中的角色。

  8. 要返回您的空間,請選擇前往 Amazon CodeCatalyst

設定工作流程動作的 IAM 角色 CodeCatalyst

本節詳細說明您可以建立以搭配 CodeCatalyst帳戶使用的 IAM 角色和政策。如需建立實例角色的指示,請參閱手動建立工作流程動作的角色。建立 IAM 角色後,請複製角色 ARN 以將 IAM 角色新增至您的帳戶連線,並將其與您的專案環境建立關聯。如需進一步了解,請參閱將IAM角色新增至帳戶連線

CodeCatalyst 為 Amazon S3 存取建立角色

對於 CodeCatalyst 工作流程建置動作,您可以使用預設CodeCatalystWorkflowDevelopmentRole-spaceName服務角色,也可以建立名為 CodeCatalystBuildRoleforS3 Access 的 IAM 角色。此角色使用具有範圍權限的策略,該策略 CodeCatalyst 需要對 AWS CloudFormation . AWS 帳戶

此角色授予執行下列作業的權限:

  • 寫入 Amazon S3 存儲桶。

  • Support 資源建設 AWS CloudFormation. 這需要 Amazon S3 訪問。

此角色使用下列原則:

{ "Version": "2012-10-17", "Statement": [{ "Action": [ "s3:PutObject", "iam:PassRole" ], "Resource": "resource_ARN", "Effect": "Allow" }] }
注意

第一次使用角色執行工作流程動作時,請在資源策略陳述式中使用萬用字元,然後在策略可用之後使用資源名稱縮小策略的範圍。

"Resource": "*"

CodeCatalyst 建置角色 AWS CloudFormation

對於 CodeCatalyst 工作流程建置動作,您可以使用預設CodeCatalystWorkflowDevelopmentRole-spaceName服務角色,也可以建立具有必要許可的 IAM 角色。此角色使用具有範圍權限的策略,該策略 CodeCatalyst 需要對 AWS CloudFormation . AWS 帳戶

此角色授予執行下列作業的權限:

  • Support 資源建設 AWS CloudFormation. 這是必需的,以及 Amazon S3 存取的 CodeCatalyst建置角色和的 CodeCatalyst 部署角色 AWS CloudFormation。

下列 AWS 受管理的原則應附加至此角色:

  • AWSCloudFormationFullAccess

  • IAM FullAccess

  • 亞馬遜 FullAccess

  • 亞馬遜 API GatewayAdministrator

  • AWSLambdaFullAccess

CodeCatalyst CDK 的構建角色

對於執行 CDK 建置動作的工作 CodeCatalyst 流程,例如現代三層 Web 應用程式,您可以使用預設CodeCatalystWorkflowDevelopmentRole-spaceName服務角色,或者建立具有必要權限的 IAM 角色。此角色使用具有範圍權限的原則, CodeCatalyst 需要針對 AWS CloudFormation . AWS 帳戶

此角色授予執行下列作業的權限:

  • 寫入 Amazon S3 存儲桶。

  • Support CDK 構建和 AWS CloudFormation 資源堆棧的構建。這需要存取 Amazon S3 以取得成品儲存、Amazon ECR 以支援映像儲存庫,以及 SSM 以進行虛擬執行個體的系統控管和監控。

此角色使用下列原則:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:*", "ecr:*", "ssm:*", "s3:*", "iam:PassRole", "iam:GetRole", "iam:CreateRole", "iam:AttachRolePolicy", "iam:PutRolePolicy" ], "Resource": "*" } ] }
注意

第一次使用角色執行工作流程動作時,請在資源策略陳述式中使用萬用字元,然後在策略可用之後使用資源名稱縮小策略的範圍。

"Resource": "*"

CodeCatalyst 部署角色 AWS CloudFormation

對於使用的工作 CodeCatalyst 流程部署動作 AWS CloudFormation,您可以使用預設CodeCatalystWorkflowDevelopmentRole-spaceName服務角色,或者您可以使用具有範圍權限的原則,這些原則 CodeCatalyst 需要在中的 AWS CloudFormation 資源上執行工作。 AWS 帳戶

此角色授予執行下列作業的權限:

  • 允許調 CodeCatalyst 用函數以通過 AWS CloudFormation執行藍/綠部署。

  • 允許 CodeCatalyst 在中創建和更新堆棧和更改集。 AWS CloudFormation

此角色使用下列原則:

{"Action": [ "cloudformation:CreateStack", "cloudformation:DeleteStack", "cloudformation:Describe*", "cloudformation:UpdateStack", "cloudformation:CreateChangeSet", "cloudformation:DeleteChangeSet", "cloudformation:ExecuteChangeSet", "cloudformation:SetStackPolicy", "cloudformation:ValidateTemplate", "cloudformation:List*", "iam:PassRole" ], "Resource": "resource_ARN", "Effect": "Allow" }
注意

第一次使用角色執行工作流程動作時,請在資源策略陳述式中使用萬用字元,然後在策略可用之後使用資源名稱縮小策略的範圍。

"Resource": "*"

CodeCatalyst 部署 Amazon EC2 的角色

CodeCatalyst 工作流程部署動作使用具有必要許可的 IAM 角色。此角色使用具有範圍許可 CodeCatalyst 的政策,該政策 Amazon EC2 在您的. AWS 帳戶該CodeCatalystWorkflowDevelopmentRole-spaceName角色的預設政策不包括適用於 Amazon EC2 或 Amazon EC2 Auto Scaling 的許可。

此角色授予執行下列作業的權限:

  • 建立 Amazon EC2 部署。

  • 閱讀執行個體上的標籤,或透過 Auto Scaling 群組名稱識別 Amazon EC2 執行個體。

  • 讀取、建立、更新和刪除 Amazon EC2 Auto Scaling 群組、生命週期勾點和擴展政策。

  • 將資訊發佈到 Amazon SNS 主題。

  • 擷取有關 CloudWatch 警報的資訊。

  • 讀取並更新 Elastic Load Balancing。

此角色使用下列原則:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "autoscaling:CompleteLifecycleAction", "autoscaling:DeleteLifecycleHook", "autoscaling:DescribeAutoScalingGroups", "autoscaling:DescribeLifecycleHooks", "autoscaling:PutLifecycleHook", "autoscaling:RecordLifecycleActionHeartbeat", "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup", "autoscaling:EnableMetricsCollection", "autoscaling:DescribePolicies", "autoscaling:DescribeScheduledActions", "autoscaling:DescribeNotificationConfigurations", "autoscaling:SuspendProcesses", "autoscaling:ResumeProcesses", "autoscaling:AttachLoadBalancers", "autoscaling:AttachLoadBalancerTargetGroups", "autoscaling:PutScalingPolicy", "autoscaling:PutScheduledUpdateGroupAction", "autoscaling:PutNotificationConfiguration", "autoscaling:PutWarmPool", "autoscaling:DescribeScalingActivities", "autoscaling:DeleteAutoScalingGroup", "ec2:DescribeInstances", "ec2:DescribeInstanceStatus", "ec2:TerminateInstances", "tag:GetResources", "sns:Publish", "cloudwatch:DescribeAlarms", "cloudwatch:PutMetricAlarm", "elasticloadbalancing:DescribeLoadBalancers", "elasticloadbalancing:DescribeInstanceHealth", "elasticloadbalancing:RegisterInstancesWithLoadBalancer", "elasticloadbalancing:DeregisterInstancesFromLoadBalancer", "elasticloadbalancing:DescribeTargetGroups", "elasticloadbalancing:DescribeTargetHealth", "elasticloadbalancing:RegisterTargets", "elasticloadbalancing:DeregisterTargets" ], "Resource": "resource_ARN" } ] }
注意

第一次使用角色執行工作流程動作時,請在資源策略陳述式中使用萬用字元,然後在策略可用之後使用資源名稱縮小策略的範圍。

"Resource": "*"

CodeCatalyst Amazon ECS 的部署角色

對於 CodeCatalyst 工作流程動作,您可以建立具有必要許可的 IAM 角色。您可以使用預設CodeCatalystWorkflowDevelopmentRole-spaceName服務角色,也可以為部 CodeCatalyst 署動作建立 IAM 角色,以用於 Lambda 部署。此角色使用具有範圍許可的政策,該政策 CodeCatalyst 需要在您的 Amazon ECS 資源上執行任務。 AWS 帳戶

此角色授予執行下列作業的權限:

  • 代表 CodeCatalyst 使用者在 CodeCatalyst 連線中指定的帳戶中啟動滾動 Amazon ECS 部署。

  • 讀取、更新和刪除 Amazon ECS 任務集。

  • 更新 Elastic Load Balancing 目標群組、監聽器和規則。

  • 叫用 Lambda 函數。

  • 存取 Amazon S3 儲存貯體中的修訂版檔案。

  • 擷取有關 CloudWatch 警報的資訊。

  • 將資訊發佈到 Amazon SNS 主題。

此角色使用下列原則:

{ "Version": "2012-10-17", "Statement": [{ "Action":[ "ecs:DescribeServices", "ecs:CreateTaskSet", "ecs:DeleteTaskSet", "ecs:ListClusters", "ecs:RegisterTaskDefinition", "ecs:UpdateServicePrimaryTaskSet", "ecs:UpdateService", "elasticloadbalancing:DescribeTargetGroups", "elasticloadbalancing:DescribeListeners", "elasticloadbalancing:ModifyListener", "elasticloadbalancing:DescribeRules", "elasticloadbalancing:ModifyRule", "lambda:InvokeFunction", "lambda:ListFunctions", "cloudwatch:DescribeAlarms", "sns:Publish", "sns:ListTopics", "s3:GetObject", "s3:GetObjectVersion", "codedeploy:CreateApplication", "codedeploy:CreateDeployment", "codedeploy:CreateDeploymentGroup", "codedeploy:GetApplication", "codedeploy:GetDeployment", "codedeploy:GetDeploymentGroup", "codedeploy:ListApplications", "codedeploy:ListDeploymentGroups", "codedeploy:ListDeployments", "codedeploy:StopDeployment", "codedeploy:GetDeploymentTarget", "codedeploy:ListDeploymentTargets", "codedeploy:GetDeploymentConfig", "codedeploy:GetApplicationRevision", "codedeploy:RegisterApplicationRevision", "codedeploy:BatchGetApplicationRevisions", "codedeploy:BatchGetDeploymentGroups", "codedeploy:BatchGetDeployments", "codedeploy:BatchGetApplications", "codedeploy:ListApplicationRevisions", "codedeploy:ListDeploymentConfigs", "codedeploy:ContinueDeployment" ], "Resource":"*", "Effect":"Allow" },{"Action":[ "iam:PassRole" ], "Effect":"Allow", "Resource":"*", "Condition":{"StringLike":{"iam:PassedToService":[ "ecs-tasks.amazonaws.com", "codedeploy.amazonaws.com" ] } } }] }
注意

第一次使用角色執行工作流程動作時,請在資源策略陳述式中使用萬用字元,然後在策略可用之後使用資源名稱縮小策略的範圍。

"Resource": "*"

CodeCatalyst 部署角色

對於 CodeCatalyst 工作流程動作,您可以建立具有必要許可的 IAM 角色。您可以使用預設CodeCatalystWorkflowDevelopmentRole-spaceName服務角色,或者建立 IAM 角色來部 CodeCatalyst署動作以用於 Lambda 部署。此角色使用具有範圍權限的政策,該政 Lambda CodeCatalyst 需要在. AWS 帳戶

此角色授予執行下列作業的權限:

  • 讀取、更新和叫用 Lambda 函數和別名。

  • 存取 Amazon S3 儲存貯體中的修訂版檔案。

  • 擷取 CloudWatch 事件警示的相關資訊。

  • 將資訊發佈到 Amazon SNS 主題。

此角色使用下列原則:

*{* "Version": "2012-10-17", "Statement": [ { "Action": [ "cloudwatch:DescribeAlarms", "lambda:UpdateAlias", "lambda:GetAlias", "lambda:GetProvisionedConcurrencyConfig", "sns:Publish" ], "Resource": "resource_ARN", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::/CodeDeploy/", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "", "Condition": { "StringEquals": { "s3:ExistingObjectTag/UseWithCodeDeploy": "true" } }, "Effect": "Allow" }, { "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:::function:CodeDeployHook_*", "Effect": "Allow" } ] }
注意

第一次使用角色執行工作流程動作時,請在資源策略陳述式中使用萬用字元,然後在策略可用之後使用資源名稱縮小策略的範圍。

"Resource": "*"

CodeCatalyst 部署角色

對於 CodeCatalyst 工作流程動作,您可以使用預設CodeCatalystWorkflowDevelopmentRole-spaceName服務角色,也可以建立具有必要許可的 IAM 角色。此角色使用具有範圍權限的政策,該政 Lambda CodeCatalyst 需要在. AWS 帳戶

此角色授予執行下列作業的權限:

  • 讀取、更新和叫用 Lambda 函數和別名。

  • 存取 Amazon S3 儲存貯體中的修訂版檔案。

  • 擷取有關 CloudWatch 警報的資訊。

  • 將資訊發佈到 Amazon SNS 主題。

此角色使用下列原則:

*{* "Version": "2012-10-17", "Statement": [ { "Action": [ "cloudwatch:DescribeAlarms", "lambda:UpdateAlias", "lambda:GetAlias", "lambda:GetProvisionedConcurrencyConfig", "sns:Publish" ], "Resource": "resource_ARN", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::/CodeDeploy/", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "", "Condition": { "StringEquals": { "s3:ExistingObjectTag/UseWithCodeDeploy": "true" } }, "Effect": "Allow" }, { "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:::function:CodeDeployHook_*", "Effect": "Allow" } ] }
注意

第一次使用角色執行工作流程動作時,請在資源策略陳述式中使用萬用字元,然後在策略可用之後使用資源名稱縮小策略的範圍。

"Resource": "*"

CodeCatalyst 部署角色 AWS SAM

對於 CodeCatalyst 工作流程動作,您可以使用預設CodeCatalystWorkflowDevelopmentRole-spaceName服務角色,也可以建立具有必要許可的 IAM 角色。此角色使用具有範圍權限的策略,該策略 CodeCatalyst 需要 AWS CloudFormation 在. AWS SAM AWS 帳戶

此角色授予執行下列作業的權限:

  • 允許叫 CodeCatalyst 用 Lambda 函數來執行無伺服器和 AWS SAM CLI 應用程式的部署。

  • 允許 CodeCatalyst 在中創建和更新堆棧和更改集。 AWS CloudFormation

此角色使用下列原則:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "iam:PassRole", "iam:DeleteRole", "iam:GetRole", "iam:TagRole", "iam:CreateRole", "iam:AttachRolePolicy", "iam:DetachRolePolicy", "cloudformation:*", "lambda:*", "apigateway:*" ], "Resource": "*" } ] }
注意

第一次使用角色執行工作流程動作時,請在資源策略陳述式中使用萬用字元,然後在策略可用之後使用資源名稱縮小策略的範圍。

"Resource": "*"

CodeCatalyst Amazon EC2 的只讀角色

對於 CodeCatalyst 工作流程動作,您可以建立具有必要許可的 IAM 角色。此角色使用具有範圍許可 CodeCatalyst 的政策,該政策 Amazon EC2 在您的. AWS 帳戶CodeCatalystWorkflowDevelopmentRole-spaceName服務角色不包含 Amazon EC2 的許可或 Amazon 所描述的動作 CloudWatch。

此角色授予執行下列作業的權限:

  • 取得 Amazon EC2 執行個體的狀態。

  • 取得 Amazon EC2 執行個體的 CloudWatch 指標。

此角色使用下列原則:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:Describe", "Resource": "resource_ARN" }, { "Effect": "Allow", "Action": "elasticloadbalancing:Describe", "Resource": "resource_ARN" }, { "Effect": "Allow", "Action": [ "cloudwatch:ListMetrics", "cloudwatch:GetMetricStatistics", "cloudwatch:Describe" ], "Resource": "resource_ARN" }, { "Effect": "Allow", "Action": "autoscaling:Describe", "Resource": "resource_ARN" } ] }
注意

第一次使用角色執行工作流程動作時,請在資源策略陳述式中使用萬用字元,然後在策略可用之後使用資源名稱縮小策略的範圍。

"Resource": "*"

CodeCatalyst Amazon ECS 的唯讀角色

對於 CodeCatalyst 工作流程動作,您可以建立具有必要許可的 IAM 角色。此角色使用具有範圍許可的政策,該政策 CodeCatalyst 需要在您的 Amazon ECS 資源上執行任務。 AWS 帳戶

此角色授予執行下列作業的權限:

  • 閱讀 Amazon ECS 任務集。

  • 擷取有關 CloudWatch 警報的資訊。

此角色使用下列原則:

*{* "Version": "2012-10-17", "Statement": [ { "Action": [ "ecs:DescribeServices", "cloudwatch:DescribeAlarms" ], "Resource": "resource_ARN", "Effect": "Allow" }, { "Action": [ "elasticloadbalancing:DescribeTargetGroups", "elasticloadbalancing:DescribeListeners", "elasticloadbalancing:DescribeRules" ], "Resource": "resource_ARN", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "", "Condition": { "StringEquals": { "s3:ExistingObjectTag/UseWithCodeDeploy": "true" } }, "Effect": "Allow" }, { "Action": [ "iam:PassRole" ], "Effect": "Allow", "Resource": [ "arn:aws:iam:::role/ecsTaskExecutionRole", "arn:aws:iam:::role/ECSTaskExecution" ], "Condition": { "StringLike": { "iam:PassedToService": [ "ecs-tasks.amazonaws.com" ] } } } ] }
注意

第一次使用角色執行工作流程動作時,請在資源策略陳述式中使用萬用字元,然後在策略可用之後使用資源名稱縮小策略的範圍。

"Resource": "*"

CodeCatalyst Lambda 的唯讀角色

對於 CodeCatalyst 工作流程動作,您可以建立具有必要許可的 IAM 角色。此角色使用具有範圍權限的政策,該政 Lambda CodeCatalyst 需要在. AWS 帳戶

此角色授與下列項目的權限:

  • 讀取 Lambda 函數和別名。

  • 存取 Amazon S3 儲存貯體中的修訂版檔案。

  • 擷取有關 CloudWatch 警報的資訊。

此角色使用下列 政策。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "cloudwatch:DescribeAlarms", "lambda:GetAlias", "lambda:GetProvisionedConcurrencyConfig" ], "Resource": "resource_ARN", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::/CodeDeploy/", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "", "Condition": { "StringEquals": { "s3:ExistingObjectTag/UseWithCodeDeploy": "true" } }, "Effect": "Allow" } ] }
注意

第一次使用角色執行工作流程動作時,請在資源策略陳述式中使用萬用字元,然後在策略可用之後使用資源名稱縮小策略的範圍。

"Resource": "*"

手動建立工作流程動作的角色

CodeCatalyst 工作流程動作使用您建立的 IAM 角色,稱為建置角色、部署角色和堆疊角色。

請依照下列步驟在 IAM 中建立這些角色。

若要建立部署角色
  1. 建立角色的策略,執行方式如下:

    1. 登入到 AWS。

    2. 前往 https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。

    3. 在導覽窗格中,選擇政策

    4. 選擇 Create policy (建立政策)。

    5. 請選擇 JSON 標籤。

    6. 刪除現有的程式碼。

    7. 貼上以下程式碼:

      { "Version": "2012-10-17", "Statement": [{ "Action": [ "cloudformation:CreateStack", "cloudformation:DeleteStack", "cloudformation:Describe*", "cloudformation:UpdateStack", "cloudformation:CreateChangeSet", "cloudformation:DeleteChangeSet", "cloudformation:ExecuteChangeSet", "cloudformation:SetStackPolicy", "cloudformation:ValidateTemplate", "cloudformation:List*", "iam:PassRole" ], "Resource": "*", "Effect": "Allow" }] }
      注意

      第一次使用角色執行工作流程動作時,請在資源策略陳述式中使用萬用字元,然後在策略可用之後使用資源名稱縮小策略的範圍。

      "Resource": "*"
    8. 選擇下一步:標籤

    9. 選擇下一步:檢閱

    10. 名稱中,輸入:

      codecatalyst-deploy-policy
    11. 選擇建立政策

      您現在已建立權限原則。

  2. 建立部署角色,如下所示:

    1. 在導覽窗格中,選擇 Roles (角色),然後選擇 Create role (建立角色)

    2. 選擇 [自訂信任原則]。

    3. 刪除現有的自訂信任原則。

    4. 新增下列自訂信任原則:

      { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
    5. 選擇下一步

    6. 在 [權限] 原則中,搜尋codecatalyst-deploy-policy並選取其核取方塊。

    7. 選擇下一步

    8. 在「角色名稱」中,輸入:

      codecatalyst-deploy-role
    9. 對於「角色」描述,請輸入:

      CodeCatalyst deploy role
    10. 選擇建立角色

    您現在已建立具有信任原則和權限原則的部署角色。

  3. 取得部署角色 ARN,如下所示:

    1. 在導覽窗格中,選擇角色

    2. 在搜尋方塊中,輸入您剛建立的角色名稱 (codecatalyst-deploy-role)。

    3. 從清單中選擇角色。

      此時會顯示角色的 [摘要] 頁面。

    4. 在頂端複製 ARN 值。

    您現在已建立具有適當權限的部署角色,並取得其 ARN。

若要建立建置角色
  1. 建立角色的策略,執行方式如下:

    1. 登入到 AWS。

    2. 前往 https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。

    3. 在導覽窗格中,選擇政策

    4. 選擇 Create policy (建立政策)。

    5. 請選擇 JSON 標籤。

    6. 刪除現有的程式碼。

    7. 貼上以下程式碼:

      { "Version": "2012-10-17", "Statement": [{ "Action": [ "s3:PutObject", "iam:PassRole" ], "Resource": "*", "Effect": "Allow" }] }
      注意

      第一次使用角色執行工作流程動作時,請在資源策略陳述式中使用萬用字元,然後在策略可用之後使用資源名稱縮小策略的範圍。

      "Resource": "*"
    8. 選擇下一步:標籤

    9. 選擇下一步:檢閱

    10. 名稱中,輸入:

      codecatalyst-build-policy
    11. 選擇建立政策

      您現在已建立權限原則。

  2. 建立組建角色,如下所示:

    1. 在導覽窗格中,選擇 Roles (角色),然後選擇 Create role (建立角色)

    2. 選擇 [自訂信任原則]。

    3. 刪除現有的自訂信任原則。

    4. 新增下列自訂信任原則:

      { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
    5. 選擇下一步

    6. 在 [權限] 原則中,搜尋codecatalyst-build-policy並選取其核取方塊。

    7. 選擇下一步

    8. 在「角色名稱」中,輸入:

      codecatalyst-build-role
    9. 對於「角色」描述,請輸入:

      CodeCatalyst build role
    10. 選擇建立角色

    您現在已建立具有信任原則和權限原則的組建角色。

  3. 取得建置角色 ARN,如下所示:

    1. 在導覽窗格中,選擇角色

    2. 在搜尋方塊中,輸入您剛建立的角色名稱 (codecatalyst-build-role)。

    3. 從清單中選擇角色。

      此時會顯示角色的 [摘要] 頁面。

    4. 在頂端複製 ARN 值。

    您現在已建立具有適當權限的組建角色,並取得其 ARN。

若要建立堆疊角色
注意

您不必建立堆疊角色,雖然出於安全性考量,建議您這麼做。如果您不建立堆疊角色,則需要將此程序中進一步描述的權限原則新增至部署角色。

  1. AWS 使用您要部署堆疊的帳戶登入。

  2. 前往 https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。

  3. 在瀏覽窗格中,選擇 [角色],然後選擇 [建立角色]。

  4. 在頂部,選擇AWS 服務

  5. 從服務清單中選擇CloudFormation

  6. 選擇下一步:許可

  7. 在搜尋方塊中,新增存取堆疊中資源所需的任何原則。例如,如果您的堆疊包含 AWS Lambda 函數,則需要新增授與 Lambda 存取權的政策。

    提示

    如果您不確定要新增哪些原則,可以暫時省略它們。當您測試動作時,如果您沒有正確的權限, AWS CloudFormation 會產生錯誤,顯示您需要新增的權限。

  8. 選擇下一步:標籤

  9. 選擇下一步:檢閱

  10. 在「角色名稱」中,輸入:

    codecatalyst-stack-role
  11. 選擇建立角色

  12. 若要取得堆疊角色的 ARN,請執行下列動作:

    1. 在導覽窗格中,選擇角色

    2. 在搜尋方塊中,輸入您剛建立的角色名稱 (codecatalyst-stack-role)。

    3. 從清單中選擇角色。

    4. 在 [摘要] 頁面上,複製角色 ARN 值。

用 AWS CloudFormation 於在 IAM 中建立政策和角色

您可以選擇建立和使用 AWS CloudFormation 範本來建立所需的策略和角色,以便在 CodeCatalyst 專案和工作流程中存取資源。 AWS 帳戶 AWS CloudFormation 這項服務可協助您建立資源模型並設定 AWS 資源,以減少管理這些資源的時間,而將更多時間專注於執行的應用程式 AWS。如果您打算建立多個角色 AWS 帳戶,建立範本可協助您更快地執行此工作。

下列範例範本會建立部署動作角色和原則。

Parameters: CodeCatalystAccountId: Type: String Description: Account ID from the connections page ExternalId: Type: String Description: External ID from the connections page Resources: CrossAccountRole: Type: 'AWS::IAM::Role' Properties: AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: Allow Principal: AWS: - !Ref CodeCatalystAccountId Action: - 'sts:AssumeRole' Condition: StringEquals: sts:ExternalId: !Ref ExternalId Path: / Policies: - PolicyName: CodeCatalyst-CloudFormation-action-policy PolicyDocument: Version: "2012-10-17" Statement: - Effect: Allow Action: - 'cloudformation:CreateStack' - 'cloudformation:DeleteStack' - 'cloudformation:Describe*' - 'cloudformation:UpdateStack' - 'cloudformation:CreateChangeSet' - 'cloudformation:DeleteChangeSet' - 'cloudformation:ExecuteChangeSet' - 'cloudformation:SetStackPolicy' - 'cloudformation:ValidateTemplate' - 'cloudformation:List*' - 'iam:PassRole' Resource: '*'

手動建立 Web 應用程式藍圖的角色

CodeCatalyst Web 應用程式藍圖使用您建立的 IAM 角色,稱為 CDK 的建置角色、部署角色和堆疊角色。

請依照下列步驟在 IAM 中建立角色。

若要建立建置角色
  1. 建立角色的策略,執行方式如下:

    1. 登入到 AWS。

    2. 前往 https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。

    3. 在導覽窗格中,選擇政策

    4. 選擇建立政策

    5. 請選擇 JSON 標籤。

    6. 刪除現有的程式碼。

    7. 貼上以下程式碼:

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:*", "ecr:*", "ssm:*", "s3:*", "iam:PassRole", "iam:GetRole", "iam:CreateRole", "iam:AttachRolePolicy", "iam:PutRolePolicy" ], "Resource": "*" } ] }
      注意

      第一次使用角色執行工作流程動作時,請在資源策略陳述式中使用萬用字元,然後在策略可用之後使用資源名稱縮小策略的範圍。

      "Resource": "*"
    8. 選擇下一步:標籤

    9. 選擇下一步:檢閱

    10. 名稱中,輸入:

      codecatalyst-webapp-build-policy
    11. 選擇建立政策

      您現在已建立權限原則。

  2. 建立組建角色,如下所示:

    1. 在導覽窗格中,選擇 Roles (角色),然後選擇 Create role (建立角色)

    2. 選擇 [自訂信任原則]。

    3. 刪除現有的自訂信任原則。

    4. 新增下列自訂信任原則:

      { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
    5. 選擇下一步

    6. 將權限原則附加至組建角色。在 [新增權限] 頁面的 [權限原則] 區段中,搜尋codecatalyst-webapp-build-policy並選取其核取方塊。

    7. 選擇下一步

    8. 在「角色名稱」中,輸入:

      codecatalyst-webapp-build-role
    9. 對於「角色」描述,請輸入:

      CodeCatalyst Web app build role
    10. 選擇建立角色

    您現在已建立具有信任原則和權限原則的組建角色。

  3. 將權限原則附加至組建角色,如下所示:

    1. 在導覽窗格中,選擇 [角色],然後搜尋codecatalyst-webapp-build-role

    2. 選擇codecatalyst-webapp-build-role顯示其詳細資訊。

    3. 在 [權限] 索引標籤中,選擇 [新增權限],然後選擇 [附加原則]。

    4. 搜尋codecatalyst-webapp-build-policy,選取其核取方塊,然後選擇 [附加原則]。

      您現在已將權限原則附加至組建角色。組建角色現在有兩個原則:權限原則和信任原則。

  4. 取得建置角色 ARN,如下所示:

    1. 在導覽窗格中,選擇角色

    2. 在搜尋方塊中,輸入您剛建立的角色名稱 (codecatalyst-webapp-build-role)。

    3. 從清單中選擇角色。

      此時會顯示角色的 [摘要] 頁面。

    4. 在頂端複製 ARN 值。

    您現在已建立具有適當權限的組建角色,並取得其 ARN。

手動建立 SAM 藍圖的角色

S CodeCatalyst AM 藍圖使用您建立的 IAM 角色稱為建置角色,以 CloudFormation及 S AM 的部署角色。

請依照下列步驟在 IAM 中建立角色。

若要建立下列項目的建置角色 CloudFormation
  1. 建立角色的策略,執行方式如下:

    1. 登入到 AWS。

    2. 前往 https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。

    3. 在導覽窗格中,選擇政策

    4. 選擇建立政策

    5. 請選擇 JSON 標籤。

    6. 刪除現有的程式碼。

    7. 貼上以下程式碼:

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:*", "cloudformation:*" ], "Resource": "*" } ] }
      注意

      第一次使用角色執行工作流程動作時,請在資源策略陳述式中使用萬用字元,然後在策略可用之後使用資源名稱縮小策略的範圍。

      "Resource": "*"
    8. 選擇下一步:標籤

    9. 選擇下一步:檢閱

    10. 名稱中,輸入:

      codecatalyst-SAM-build-policy
    11. 選擇建立政策

      您現在已建立權限原則。

  2. 建立組建角色,如下所示:

    1. 在導覽窗格中,選擇 Roles (角色),然後選擇 Create role (建立角色)

    2. 選擇 [自訂信任原則]。

    3. 刪除現有的自訂信任原則。

    4. 新增下列自訂信任原則:

      { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
    5. 選擇下一步

    6. 將權限原則附加至組建角色。在 [新增權限] 頁面的 [權限原則] 區段中,搜尋codecatalyst-SAM-build-policy並選取其核取方塊。

    7. 選擇下一步

    8. 在「角色名稱」中,輸入:

      codecatalyst-SAM-build-role
    9. 對於「角色」描述,請輸入:

      CodeCatalyst SAM build role
    10. 選擇建立角色

    您現在已建立具有信任原則和權限原則的組建角色。

  3. 將權限原則附加至組建角色,如下所示:

    1. 在導覽窗格中,選擇 [角色],然後搜尋codecatalyst-SAM-build-role

    2. 選擇codecatalyst-SAM-build-role顯示其詳細資訊。

    3. 在 [權限] 索引標籤中,選擇 [新增權限],然後選擇 [附加原則]。

    4. 搜尋codecatalyst-SAM-build-policy,選取其核取方塊,然後選擇 [附加原則]。

      您現在已將權限原則附加至組建角色。組建角色現在有兩個原則:權限原則和信任原則。

  4. 取得建置角色 ARN,如下所示:

    1. 在導覽窗格中,選擇角色

    2. 在搜尋方塊中,輸入您剛建立的角色名稱 (codecatalyst-SAM-build-role)。

    3. 從清單中選擇角色。

      此時會顯示角色的 [摘要] 頁面。

    4. 在頂端複製 ARN 值。

    您現在已建立具有適當權限的組建角色,並取得其 ARN。

若要建立 SAM 的部署角色
  1. 建立角色的策略,執行方式如下:

    1. 登入到 AWS。

    2. 前往 https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。

    3. 在導覽窗格中,選擇政策

    4. 選擇建立政策

    5. 請選擇 JSON 標籤。

    6. 刪除現有的程式碼。

    7. 貼上以下程式碼:

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "iam:PassRole", "iam:DeleteRole", "iam:GetRole", "iam:TagRole", "iam:CreateRole", "iam:AttachRolePolicy", "iam:DetachRolePolicy", "cloudformation:*", "lambda:*", "apigateway:*" ], "Resource": "*" } ] }
      注意

      第一次使用角色執行工作流程動作時,請在資源策略陳述式中使用萬用字元,然後在策略可用之後使用資源名稱縮小策略的範圍。

      "Resource": "*"
    8. 選擇下一步:標籤

    9. 選擇下一步:檢閱

    10. 名稱中,輸入:

      codecatalyst-SAM-deploy-policy
    11. 選擇建立政策

      您現在已建立權限原則。

  2. 建立組建角色,如下所示:

    1. 在導覽窗格中,選擇 Roles (角色),然後選擇 Create role (建立角色)

    2. 選擇 [自訂信任原則]。

    3. 刪除現有的自訂信任原則。

    4. 新增下列自訂信任原則:

      { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
    5. 選擇下一步

    6. 將權限原則附加至組建角色。在 [新增權限] 頁面的 [權限原則] 區段中,搜尋codecatalyst-SAM-deploy-policy並選取其核取方塊。

    7. 選擇下一步

    8. 在「角色名稱」中,輸入:

      codecatalyst-SAM-deploy-role
    9. 對於「角色」描述,請輸入:

      CodeCatalyst SAM deploy role
    10. 選擇建立角色

    您現在已建立具有信任原則和權限原則的組建角色。

  3. 將權限原則附加至組建角色,如下所示:

    1. 在導覽窗格中,選擇 [角色],然後搜尋codecatalyst-SAM-deploy-role

    2. 選擇codecatalyst-SAM-deploy-role顯示其詳細資訊。

    3. 在 [權限] 索引標籤中,選擇 [新增權限],然後選擇 [附加原則]。

    4. 搜尋codecatalyst-SAM-deploy-policy,選取其核取方塊,然後選擇 [附加原則]。

      您現在已將權限原則附加至組建角色。組建角色現在有兩個原則:權限原則和信任原則。

  4. 取得建置角色 ARN,如下所示:

    1. 在導覽窗格中,選擇角色

    2. 在搜尋方塊中,輸入您剛建立的角色名稱 (codecatalyst-SAM-deploy-role)。

    3. 從清單中選擇角色。

      此時會顯示角色的 [摘要] 頁面。

    4. 在頂端複製 ARN 值。

    您現在已建立具有適當權限的組建角色,並取得其 ARN。