将 AWS SDK ruby 与自定义 AWS endpoints.json 结合使用
Use AWS sdk ruby with custom AWS endpoints.json
我正在与 AWS 云不同的云上部署一些服务,但这暴露了与 AWS 兼容的端点。
我得到了一个 endpoints.json 文件,看起来像这样
{
"partitions": [
{
"defaults": {
"hostname": "{service}.{region}.{dnsSuffix}",
"protocols": [
"https"
],
"signatureVersions": [
"v4"
]
},
"dnsSuffix": "outscale.com",
"partition": "osc",
"partitionName": "Outscale",
"regionRegex": "^(cloudgouv|us|eu|ap)\-\w+\-\d+$",
"regions": {
"eu-west-2": {
"description": "EU (Paris)"
},
[...]
},
"services": {
"ec2": {
"endpoints": {
"eu-west-2": {"hostname": "fcu.eu-west-2.outscale.com"},
[...]
}
},
我怎样才能轻松地将它导入到我的 AWS sdk v3 中?在查看文档时,似乎有一些非常相似的东西可用,但我不确定我是否理解如何从我的 ruby 代码
加载此配置
我知道我可以做这样的事情
Aws.config.update(
region: 'cloudgouv-eu-west-1'
)
但我不确定如何导入整个配置(尤其是端点名称等),以便底层 sdk 自动使用它们而无需更改太多代码
我最终使用 AWS 内部 API 添加分区
# config/initializers/aws.rb
# Monkeypatch the list of AWS endpoints
new_partitions = JSON.parse(
File.read(
Rails.root.join('config', 'aws_endpoints_outscale.json')
)
)
Aws::Partitions.add(new_partitions)
Aws.config.update(
region: ENV['AWS_REGION'],
endpoint: 'outscale.com',
)
我正在与 AWS 云不同的云上部署一些服务,但这暴露了与 AWS 兼容的端点。
我得到了一个 endpoints.json 文件,看起来像这样
{
"partitions": [
{
"defaults": {
"hostname": "{service}.{region}.{dnsSuffix}",
"protocols": [
"https"
],
"signatureVersions": [
"v4"
]
},
"dnsSuffix": "outscale.com",
"partition": "osc",
"partitionName": "Outscale",
"regionRegex": "^(cloudgouv|us|eu|ap)\-\w+\-\d+$",
"regions": {
"eu-west-2": {
"description": "EU (Paris)"
},
[...]
},
"services": {
"ec2": {
"endpoints": {
"eu-west-2": {"hostname": "fcu.eu-west-2.outscale.com"},
[...]
}
},
我怎样才能轻松地将它导入到我的 AWS sdk v3 中?在查看文档时,似乎有一些非常相似的东西可用,但我不确定我是否理解如何从我的 ruby 代码
加载此配置我知道我可以做这样的事情
Aws.config.update(
region: 'cloudgouv-eu-west-1'
)
但我不确定如何导入整个配置(尤其是端点名称等),以便底层 sdk 自动使用它们而无需更改太多代码
我最终使用 AWS 内部 API 添加分区
# config/initializers/aws.rb
# Monkeypatch the list of AWS endpoints
new_partitions = JSON.parse(
File.read(
Rails.root.join('config', 'aws_endpoints_outscale.json')
)
)
Aws::Partitions.add(new_partitions)
Aws.config.update(
region: ENV['AWS_REGION'],
endpoint: 'outscale.com',
)