

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

# 创建 Amazon S3 网关端点
<a name="create-s3-gateway-endpoint"></a>

CodeArtifact 使用亚马逊简单存储服务 (Amazon S3) Simple Service 来存储包裹资产。要从中提取包裹 CodeArtifact，您必须为 Amazon S3 创建网关终端节点。当您的构建或部署过程从中下载包时 CodeArtifact，它必须访问 CodeArtifact 才能获取包元数据，Amazon S3 才能下载包资产（例如 Maven `.jar` 文件）。

**注意**  
使用 Python 或 Swift 程序包格式时不需要 Amazon S3 端点。

 要为创建 Amazon S3 网关终端节点 CodeArtifact，请使用 Amazon EC2 `create-vpc-endpoint` AWS CLI 命令。在创建端点时，必须为 VPC 选择路由表。有关更多信息，请参阅**《Amazon Virtual Private Cloud 用户指南》中的[网关 VPC 端点](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-gateway.html)。

以下示例创建 Amazon S3 端点。

```
aws ec2 create-vpc-endpoint --vpc-id vpcid --service-name com.amazonaws.region.s3 \
  --route-table-ids routetableid
```

## Amazon S3 存储桶的最低权限 AWS CodeArtifact
<a name="s3-gateway-endpoint-permissions"></a>

Amazon S3 网关端点使用 IAM policy 文档来限制对服务的访问。要仅允许最低的 Amazon S3 存储桶权限 CodeArtifact，请限制访问您在为终端节点创建 IAM 策略文档时 CodeArtifact 使用的 Amazon S3 存储桶。

下表描述了您应在策略中引用的 Amazon S3 存储桶，以允许 CodeArtifact 在每个区域进行访问。


****  

| Region | Amazon S3 存储桶 ARN | 
| --- | --- | 
|  us-east-1  |  arn:aws:s3:::assets-193858265520-us-east-1  | 
|  us-east-2  |  arn:aws:s3:::assets-250872398865-us-east-2  | 
|  us-west-2  |  arn:aws:s3:::assets-787052242323-us-west-2  | 
|  eu-west-1  |  arn:aws:s3:::assets-438097961670-eu-west-1  | 
|  eu-west-2  |  arn:aws:s3:::assets-247805302724-eu-west-2  | 
|  eu-west-3  |  arn:aws:s3:::assets-762466490029-eu-west-3  | 
|  eu-north-1  |  arn:aws:s3:::assets-611884512288-eu-north-1  | 
|  eu-south-1  |  arn:aws:s3:::assets-484130244270-eu-south-1  | 
|  eu-central-1  |  arn:aws:s3:::assets-769407342218-eu-central-1  | 
|  ap-northeast-1  |  arn:aws:s3:::assets-660291247815-ap-northeast-1  | 
|  ap-southeast-1  |  arn:aws:s3:::assets-421485864821-ap-southeast-1  | 
|  ap-southeast-2  |  arn:aws:s3:::assets-860415559748-ap-southeast-2  | 
|  ap-south-1  |  arn:aws:s3:::assets-681137435769-ap-south-1  | 

您可以使用`aws codeartifact describe-domain`命令来获取 CodeArtifact 域使用的 Amazon S3 存储桶。

```
aws codeartifact describe-domain --domain mydomain
```

```
{
  "domain": {
    "name": "mydomain",
    "owner": "111122223333",
    "arn": "arn:aws:codeartifact:us-west-2:111122223333:domain/mydomain",
    "status": "Active",
    "createdTime": 1583075193.861,
    "encryptionKey": "arn:aws:kms:us-west-2:111122223333:key/a73que8sq-ba...",
    "repositoryCount": 13,
    "assetSizeBytes": 513830295,
    "s3BucketArn": "arn:aws:s3:::assets-787052242323-us-west-2"
  }
}
```

### 示例
<a name="s3-gateway-policy-example"></a>

以下示例说明如何提供`us-east-1`对该地区 CodeArtifact 操作所需的 Amazon S3 存储桶的访问权限。对于其他区域，请根据上表使用您所在区域的正确权限 ARN 来更新 `Resource` 条目。

```
{
  "Statement": [
    {
      "Sid": "Access-to-specific-bucket-only",
      "Principal": "*",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": ["arn:aws:s3:::assets-193858265520-us-east-1/*"]
    }
  ]
}
```