本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
教程:创建将您的无服务器应用程序发布到的管道 Amazon Serverless Application Repository
您可以使用 Amazon CodePipeline 将您的 Amazon SAM 无服务器应用程序持续交付给。 Amazon Serverless Application Repository
重要
作为创建管道的一部分,客户提供的 S3 工件存储桶将 CodePipeline 用于项目。(这与用于 S3 源操作的存储桶不同。) 如果 S3 工件存储桶与您的管道账户位于不同的账户中,请确保 S3 工件存储桶归其所有 Amazon Web Services 账户 ,该存储桶是安全且可靠的。
本教程介绍如何创建和配置管道来构建托管的无服务器应用程序并将其 Amazon Serverless Application Repository 自动发布到。 GitHub 管道 GitHub 用作源提供者和 CodeBuild 生成提供者。要将您的无服务器应用程序发布到 Amazon Serverless Application Repository,您需要部署一个应用程序(来自 Amazon Serverless Application Repository),并将该应用程序
重要
在此过程中,您在管道中添加的许多操作都涉及在创建管道之前需要创建的 Amazon 资源。 Amazon 源操作的资源必须始终在您创建管道的同一 Amazon 区域创建。例如,如果您在美国东部(俄亥俄州)地区创建管道,则您的 CodeCommit 存储库必须位于美国东部(俄亥俄州)区域。
您可以在创建管道时添加跨区域操作。 Amazon 跨区域操作的资源必须位于您计划执行操作的同一 Amazon 区域。有关更多信息,请参阅 在中添加跨区域操作 CodePipeline。
开始前的准备工作
在本教程中,我们假设您满足以下条件:
-
您熟悉Amazon Serverless Application Model (Amazon SAM) 和 Amazon Serverless Application Repository。
-
您在中托管了一个无服务器应用程序 GitHub ,该应用程序已 Amazon Serverless Application Repository 使用发布到。 Amazon SAM CLI要向发布示例应用程序 Amazon Serverless Application Repository,请参阅《Amazon Serverless Application Repository 开发人员指南》中的 “快速入门:发布应用程序”。要将您自己的应用程序发布到 Amazon Serverless Application Repository,请参阅《Amazon Serverless Application Model 开发人员指南》 Amazon SAM CLI中的使用发布应用程序。
步骤 1:创建 buildspec.yml 文件
创建包含以下内容的buildspec.yml
文件,并将其添加到无服务器应用程序的 GitHub 存储库中。Replace(替换) template.yml
使用您的应用程序的 Amazon SAM 模板和 bucketname
使用存储打包应用程序的 S3 存储桶。
version: 0.2 phases: install: runtime-versions: python: 3.8 build: commands: - sam package --template-file
template.yml
--s3-bucketbucketname
--output-template-file packaged-template.yml artifacts: files: - packaged-template.yml
步骤 2:创建并配置您的管道
按照以下步骤在要发布无服务器应用程序的 Amazon Web Services 区域 位置创建管道。
登录 Amazon Web Services Management Console 并打开 CodePipeline 控制台,网址为https://console.aws.amazon.com/codepipeline/
。 -
如有必要,请切换到要发布无服务器应用程序 Amazon Web Services 区域 的位置。
-
选择 Create pipeline(创建管道)。在 Choose pipeline settings (选择管道设置) 页面上,在 Pipeline name (管道名称) 中,输入管道的名称。
-
在管道类型中,选择 V2。有关更多信息,请参阅 管道类型。选择下一步。
-
在服务角色中,选择新建服务角色 CodePipeline 以允许在中创建服务角色IAM。
-
将高级设置中的各项设置保留为默认值,然后选择下一步。
-
在添加源舞台页面的源提供者中,选择GitHub。
-
在连接下,选择一个现有连接或创建一个新连接。要创建或管理 GitHub 源操作的连接,请参阅GitHub 连接。
-
在存储库中,选择您的 GitHub 源存储库。
-
在 Branch 中,选择您的 GitHub 分支。
-
保留源操作的其余默认值。选择下一步。
-
在 Add build stage (添加构建阶段) 页面上,添加一个构建阶段:
-
在构建提供程序中,选择 Amazon CodeBuild。对于 Region (区域),请使用管道区域。
-
选择创建项目。
-
在项目名称中,输入此构建项目的名称。
-
在环境映像中,选择托管映像。对于操作系统,请选择 Ubuntu。
-
对于 Runtime (运行时) 和 Runtime version (运行时版本),选择无服务器应用程序所需的运行时和版本。
-
对于服务角色,选择新建服务角色。
-
对于构建规范,选择使用 buildspec 文件。
-
选择 “继续” CodePipeline。这将打开 CodePipeline 控制台并创建一个使用存储库
buildspec.yml
中的进行配置的 CodeBuild 项目。该构建项目使用服务角色来管理 Amazon Web Services 服务 权限。此步骤可能需要几分钟时间。 -
选择下一步。
-
-
在 Add deploy stage (添加部署阶段) 页面上,选择 Skip deploy stage (跳过部署阶段),并通过再次选择 Skip (跳过) 接受警告消息。选择下一步。
-
选择 Create pipeline(创建管道)。您应看到一个显示源和构建阶段的示意图。
-
向 CodeBuild 服务角色授予访问存储打包应用程序的 S3 存储桶的权限。
-
在新管道的 “构建” 阶段,选择CodeBuild。
-
选择 Build details (构建详细信息) 选项卡。
-
在环境中,选择 CodeBuild 服务角色以打开IAM控制台。
-
展开
CodeBuildBasePolicy
选项,然后选择 Edit policy (编辑策略)。 -
选择JSON。
-
添加包含以下内容的新策略声明。该语句 CodeBuild 允许将对象放入存储已打包应用程序的 S3 存储桶中。Replace(替换)
bucketname
使用您的 S3 存储桶的名称。{ "Effect": "Allow", "Resource": [ "arn:aws:s3:::
bucketname
/*" ], "Action": [ "s3:PutObject" ] } -
选择查看策略。
-
选择 Save changes(保存更改)。
-
步骤 3:部署发布应用程序
按照以下步骤部署包含 Lambda 函数的应用程序,该函数执行到 Amazon Serverless Application Repository的发布操作。此应用程序是 aws-serverless-codepipeline-serverlessrepo-pub lish。
注意
您必须将应用程序部署到与您的管道 Amazon Web Services 区域 相同的位置。
-
转到应用程序
页面,然后选择 Deploy (部署)。 -
选择 “我确认此应用程序创建了自定义IAM角色”。
-
选择部署。
-
选择 “查看 Amazon CloudFormation 堆栈” 以打开 Amazon CloudFormation 控制台。
-
展开资源部分。你看 ServerlessRepoPublish,它的类型是:: LambdaAWS:: Func tion。记下此资源的物理 ID 以供下一步使用。在中创建新的发布操作时,您将使用此物理 ID CodePipeline。
步骤 4:创建发布操作
请按照以下步骤在管道中创建发布操作。
-
打开 CodePipeline 控制台,网址为https://console.aws.amazon.com/codepipeline/
。 -
在左侧导航部分中,选择要编辑的管道。
-
选择编辑。
-
在当前管道的最后一个阶段之后,选择 + Add stage (+ 添加阶段)。在 Stage name (阶段名称) 中,输入名称,例如
Publish
,然后选择 Add stage (添加阶段)。 -
在新阶段中,选择 + 添加操作组。
-
输入操作名称。从 Action provider (操作提供程序) 的 Invoke (调用) 中,选择 Amazon Lambda。
-
从输入构件中选择BuildArtifact。
-
从函数名称中,选择您在上一步中记下的 Lambda 函数的物理 ID。
-
对操作选择 Save (保存)。
-
对阶段选择 Done (完成)。
-
在右上角,选择 Save (保存)。
-
要验证您的管道,请在中对您的应用程序进行更改 GitHub。例如,更改 Amazon SAM 模板文件
Metadata
部分中应用程序的描述。提交更改并将其推送到您的 GitHub 分支。这将触发您的管道运行。管道完成后,检查您的应用程序是否已根据 Amazon Serverless Application Repository中的更改进行了更新。