Skip to main content

AWS签名存储设置

配置签名密钥和S3存储

info

这些说明适用于验证器密钥存在于AWS的密钥管理服务中、验证器签名公开发布在S3存储中的生产环境。

如果您只打算为测试或开发目的运行验证器,请考虑按照local setup guide进行操作。

1. 创建AWS IAM用户和KMS密钥

按照Agent Keys中的说明生成AWS IAM用户和KMS密钥。您将在接下来的步骤中使用此用户和密钥。

2. 创建 S3 存储

您的验证者将把它们的签名发布到此存储中。

  1. 转到AWS控制台中的AWS S3;
  2. 在右侧点击橙色的"Create Bucket"按钮;
  3. 选择一个信息详实的bucket名称,例如hyperlane验证器签名-${validator_name}-${chain_name}
  4. 考虑选择与上一步创建的KMS密钥相同的区域;
  5. 保持对象所有权的推荐设置为“ACLs disabled”;
  6. 配置公共访问设置,以便中继器可以读取您的签名;
  7. 取消选中“Block all public access”;
  8. 勾选前两个选项,阻止通过访问控制列表进行访问;
  9. 不要勾选最后两个选项,我们将通过存储策略授予公共读取权限;
  10. 请注意,这些设置可能导致公众可以访问您的存储;
  11. 剩下的默认设置都可以,点击底部的橙色“Create bucket”按钮。

3. 配置S3C存储权限

您的验证器IAM用户将需要写入权限,并且应该可以通过中继器公开读取。

  1. 请返回AWS控制台中的"Identity and Access Management (IAM)"页面;
  2. 在 "IAM resources" 下,您应该至少看到一个 "User",点击进入该用户;
  3. 点击您之前配置的用户的名称(例如 hyperlane-validator-${chain_name});
  4. 将“User ARN”复制到剪贴板中,它应该类似于 arn:aws:iam::791444913613:user/hyperlane-validator-${chain_name}
  5. 返回 AWS 控制台中的 "S3" 页面;
  6. 点击您刚刚创建的存储的名称;
  7. 在存储名称下方,点击 "Permissions";
  8. 向下滚动到 "Bucket policy",然后点击 "Edit";
  9. 输入以下内容。Bucket ARN就显示在输入策略的上方。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"${BUCKET_ARN}",
"${BUCKET_ARN}/*"
]
},
{
"Effect": "Allow",
"Principal": {
"AWS": "${USER_ARN}"
},
"Action": [
"s3:DeleteObject",
"s3:PutObject"
],
"Resource": "${BUCKET_ARN}/*"
}
]
}
tip

高级用户可以考虑使用S3 terraform module来创建具有正确权限的S3存储。