

亚马逊 CodeCatalyst 不再向新买家开放。现有客户可以继续正常使用该服务。有关更多信息，请参阅 [如何从中迁移 CodeCatalyst](migration.md)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 示例：将文件发布到 Amazon S3
<a name="s3-pub-action-example-workflow"></a>

以下示例工作流包括 **Amazon S3 发布**操作以及构建操作。该工作流会构建一个静态文档网站，然后将该网站发布到用于托管它的 Amazon S3。工作流包含以下按顺序运行的构造块：
+ **触发器** – 当您将更改推送到源存储库时，此触发器会自动启动工作流运行。有关触发器的更多信息，请参阅[使用触发器自动启动工作流运行](workflows-add-trigger.md)。
+ **构建**操作（`BuildDocs`）– 触发后，该操作会构建一个静态文档网站（`mkdocs build`），并将关联的 HTML 文件和支持元数据添加到名为 `MyDocsSite` 的构件中。有关构建操作的更多信息，请参阅[使用工作流进行构建](build-workflow-actions.md)。
+ **Amazon S3 发布**操作（`PublishToS3`）– 在构建操作完成后，此操作会将 `MyDocsSite` 构件中的站点复制到 Amazon S3 以进行托管。

**注意**  
以下工作流示例仅用于说明目的，如果不执行附加配置，则无法运行。

**注意**  
在接下来的 YAML 代码中，如果需要，可以省略 `Connections:` 部分。如果您省略此部分，则必须确保您环境的**默认 IAM 角色**字段中指定的角色包含 **Amazon S3 发布**操作所需的权限和信任策略。有关使用默认 IAM 角色设置环境的更多信息，请参阅[创建环境](deploy-environments-creating-environment.md)。有关 **Amazon S3 发布**操作所需的权限和信任策略的更多信息，请参阅[“Amazon S3 发布”操作 YAML](s3-pub-action-ref.md) 中的 [Role](s3-pub-action-ref.md#s3.pub.environment.connections.role) 属性的说明。

```
Name: codecatalyst-s3-publish-workflow
SchemaVersion: 1.0

Triggers:
  - Type: PUSH
    Branches:
      - main
Actions:
  BuildDocs:
    Identifier: aws/build@v1
    Inputs:
      Sources:
        - WorkflowSource
    Configuration:
      Steps:
        - Run: echo BuildDocs started on `date`
        - Run: pip install --upgrade pip
        - Run: pip install mkdocs
        - Run: mkdocs build
        - Run: echo BuildDocs completed on `date`
    Outputs:
      Artifacts:
      - Name: MyDocsSite
        Files:
          - "site/**/*"
        
  PublishToS3:
    Identifier: aws/s3-publish@v1
    Environment:
      Name: codecatalyst-s3-publish-environment
      Connections:
        - Name: codecatalyst-account-connection
          Role: codecatalyst-s3-publish-build-role
    Inputs:
      Sources:
        - WorkflowSource
      Artifacts:
        - MyDocsSite
    Configuration:      
      DestinationBucketName: amzn-s3-demo-bucket
      SourcePath: /artifacts/PublishToS3/MyDocSite/site
      TargetPath: my/docs/site
```