---
title: AWS Live Update内容上传
brief: 本节将解释如何在 Amazon Web Services 上创建一个具有有限访问权限的新用户,该用户可以与 Defold 编辑器一起使用,在您打包游戏时自动上传 Live update 资源。
---
# 设置 Amazon Web Service
要将 Defold Live update 功能与 Amazon 服务一起使用,您需要一个 Amazon Web Services 账户。如果您还没有账户,可以在这里创建:https://aws.amazon.com/。
本节将解释如何在 Amazon Web Services 上创建一个具有有限访问权限的新用户,该用户可以与 Defold 编辑器一起使用,在您打包游戏时自动上传 Live update 资源,以及如何配置 Amazon S3 以允许游戏客户端检索资源。有关如何配置 Amazon S3 的更多信息,请参阅 [Amazon S3 文档](http://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html)。
1. 为 Live update 资源创建存储桶
打开 `Services` 菜单并选择位于 _Storage_ 类别下的 `S3`([Amazon S3 Console](https://console.aws.amazon.com/s3))。您将看到所有现有的存储桶以及创建新存储桶的选项。虽然可以使用现有的存储桶,但我们建议您为 Live update 资源创建一个新的存储桶,以便您可以轻松限制访问。

2. 为您的存储桶添加存储桶策略
选择您希望使用的存储桶,打开 *Properties* 面板并展开面板内的 *Permissions* 选项。通过点击 *Add bucket policy* 按钮打开存储桶策略。本示例中的存储桶策略将允许匿名用户从存储桶中检索文件,这将允许游戏客户端下载游戏所需的 Live update 资源。有关存储桶策略的更多信息,请参阅 [Amazon 文档](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html)。
```json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::defold-liveupdate-example/*"
}
]
}
```

3. 为您的存储桶添加 CORS 配置(可选)
[Cross-Origin Resource Sharing (CORS)](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing) 是一种允许网站使用 JavaScript 从不同域检索资源的机制。如果您打算将游戏发布为 HTML5 客户端,则需要为存储桶添加 CORS 配置。
选择您希望使用的存储桶,打开 *Properties* 面板并展开面板内的 *Permissions* 选项。通过点击 *Add CORS Configuration* 按钮打开存储桶策略。本示例中的配置将通过指定通配符域允许来自任何网站的访问,尽管如果您知道将在哪些域上提供游戏,可以进一步限制此访问。有关 Amazon CORS 配置的更多信息,请参阅 [Amazon 文档](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html)。
```xml
*
GET
```

4. 创建 IAM 策略
打开 *Services* 菜单并选择位于 _Security, Identity & Compliance_ 类别下的 *IAM*([Amazon IAM Console](https://console.aws.amazon.com/iam))。选择左侧菜单中的 *Policies*,您将看到所有现有的策略以及创建新策略的选项。
点击 *Create Policy* 按钮,然后选择 _Create Your Own Policy_。本示例中的策略将允许用户列出所有存储桶,这仅在为 Live update 配置 Defold 项目时才需要。它还将允许用户获取访问控制列表(ACL)并将资源上传到用于 Live update 资源的特定存储桶。有关 Amazon Identity and Access Management (IAM) 的更多信息,请参阅 [Amazon 文档](http://docs.aws.amazon.com/IAM/latest/UserGuide/access.html)。
```json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets"
],
"Resource": "arn:aws:s3:::*"
},
{
"Effect": "Allow",
"Action": [
"s3:GetBucketAcl"
],
"Resource": "arn:aws:s3:::defold-liveupdate-example"
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": "arn:aws:s3:::defold-liveupdate-example/*"
}
]
}
```

5. 创建用于编程访问的用户
打开 *Services* 菜单并选择位于 _Security, Identity & Compliance_ 类别下的 *IAM*([Amazon IAM Console](https://console.aws.amazon.com/iam))。选择左侧菜单中的 *Users*,您将看到所有现有的用户以及添加新用户的选项。虽然可以使用现有用户,但我们建议您为 Live update 资源添加一个新用户,以便您可以轻松限制访问。
点击 *Add User* 按钮,提供用户名并选择 *Programmatic access* 作为 *Access type*,然后按 *Next: Permissions*。选择 *Attach existing policies directly* 并选择您在第 4 步中创建的策略。
完成该过程后,您将获得一个 *Access key ID* 和一个 *Secret access key*。
::: important
存储这些密钥 *非常重要*,因为离开页面后您将无法从 Amazon 检索它们。
:::
6. 创建凭证配置文件
此时,您应该已经创建了一个存储桶,配置了存储桶策略,添加了 CORS 配置,创建了用户策略并创建了一个新用户。剩下的唯一事情是创建一个[凭证配置文件](https://aws.amazon.com/blogs/security/a-new-and-standardized-way-to-manage-credentials-in-the-aws-sdks),以便 Defold 编辑器可以代表您访问存储桶。
在您的主文件夹中创建一个新目录 *.aws*,并在新目录中创建一个名为 *credentials* 的文件。
```bash
$ mkdir ~/.aws
$ touch ~/.aws/credentials
```
文件 *~/.aws/credentials* 将包含您通过编程访问访问 Amazon Web Services 的凭证,是管理 AWS 凭证的标准方式。在文本编辑器中打开文件,并按照下面显示的格式输入您的 *Access key ID* 和 *Secret access key*。
```ini
[defold-liveupdate-example]
aws_access_key_id =
aws_secret_access_key =
```
在括号内指定的标识符,在本例中为 _defold-liveupdate-example_,是您在 Defold 编辑器中配置项目的 Live update 设置时应提供的相同标识符。
