AWS中如何使用Fog Library创建CDN
How to use Fog Library to create CDN in AWS
我是 DevOps 领域的新手,我的公司使用 Fog 库为我们的开发环境部署 EC2 实例。我公司的一个产品需要 CDN,我正在尝试弄清楚如何使用相同的 Fog Library 使 CDN 自动化。
我在 fog.io 找到了信息,这是我放入 makeCDN.rb 的代码(使用 .sh 包装器来部署它)。
#!/usr/bin/ruby
require 'fog'
# create a connection to the service
cdn = Fog::CDN.new({
:provider => 'AWS',
:aws_access_key_id => 'fake_key_id',
:aws_secret_access_key => '2345fake_access_key6789'
})
cdn.post_distribution({
'CustomOrigin' => {
'DNSName' => 'hostname.domain.org', #example name
'HTTPPort' => '80',
'OriginProtocolPolicy' => 'match-viewer',
'DefaultRootObject' => '/',
'Enabled' => 'true',
}
})
所以,我不确定我做错了什么,但我得到的错误是:
/home/eztheog/.rvm/gems/ruby-1.9.3-p547@fogDev/gems/excon-0.38.0/lib/excon/middlewares/expects.rb:10:in
`response_call': Expected(201) <=> Actual(400 Bad Request) (Excon::Errors::BadRequest)
response => #<Excon::Response:0x00000001d73b78 @data={:body=>"<?xml version=\"1.0\"?>\n<ErrorResponse
xmlns=\"http://cloudfront.amazonaws.com/doc/2010-11-01/\"><Error>
<Type>Sender</Type><Code>MalformedXML</Code><Message>1 validation error
detected: Value null at 'distributionConfig.enabled' failed to satisfy
constraint: Member must not be null</Message></Error>
<RequestId>c2b33cda-abee-11e4-8115-b584e1255c70</RequestId>
</ErrorResponse>", :headers=>{"x-amzn-RequestId"=>"c2b33cda-abee-11e4-8115-b584e1255c70",
"Content-Type"=>"text/xml", "Content-Length"=>"371", "Date"=>"Tue, 03
Feb 2015 21:51:07 GMT"}, :status=>400, :remote_ip=>"205.251.242.229",
:local_port=>39733, :local_address=>"10.100.6.203"}, @body="<?xml
version=\"1.0\"?>\n<ErrorResponse
xmlns=\"http://cloudfront.amazonaws.com/doc/2010-11-01/\"><Error>
<Type>Sender</Type><Code>MalformedXML</Code><Message>1 validation error
detected: Value null at 'distributionConfig.enabled' failed to satisfy
constraint: Member must not be null</Message></Error>
<RequestId>c2b33cda-abee-11e4-8115-b584e1255c70</RequestId>
</ErrorResponse>", @headers={"x-amzn-RequestId"=>"c2b33cda-abee-11e4-
8115-b584e1255c70", "Content-Type"=>"text/xml", "Content-Length"=>"371",
"Date"=>"Tue, 03 Feb 2015 21:51:07 GMT"}, @status=400,
@remote_ip="205.251.242.229", @local_port=39733,
@local_address="10.100.6.203">
我找到了信息 here,但不确定如何将信息解析到 ruby 文件中。
似乎很少有博客资料可供我弄清楚如何执行此操作。
谁能给我指出正确的方向?
我发现这个 gist 解释了上下文。
因此,RubyDoc.info link(有问题)表示启用布尔值是一个选项。但是,在 AWS 中它不是(或者它似乎基于我得到的错误)。
但是,要解决这个问题,:Enabled => true 必须在 cdn.distribution 块之外。
希望这对以后正在寻找这个的人有所帮助!
另外,这可能是一个 BUG,因为 Fog 库说这个功能是可选的,但它似乎是 AWS 强制要求的。
我是 DevOps 领域的新手,我的公司使用 Fog 库为我们的开发环境部署 EC2 实例。我公司的一个产品需要 CDN,我正在尝试弄清楚如何使用相同的 Fog Library 使 CDN 自动化。
我在 fog.io 找到了信息,这是我放入 makeCDN.rb 的代码(使用 .sh 包装器来部署它)。
#!/usr/bin/ruby
require 'fog'
# create a connection to the service
cdn = Fog::CDN.new({
:provider => 'AWS',
:aws_access_key_id => 'fake_key_id',
:aws_secret_access_key => '2345fake_access_key6789'
})
cdn.post_distribution({
'CustomOrigin' => {
'DNSName' => 'hostname.domain.org', #example name
'HTTPPort' => '80',
'OriginProtocolPolicy' => 'match-viewer',
'DefaultRootObject' => '/',
'Enabled' => 'true',
}
})
所以,我不确定我做错了什么,但我得到的错误是:
/home/eztheog/.rvm/gems/ruby-1.9.3-p547@fogDev/gems/excon-0.38.0/lib/excon/middlewares/expects.rb:10:in
`response_call': Expected(201) <=> Actual(400 Bad Request) (Excon::Errors::BadRequest)
response => #<Excon::Response:0x00000001d73b78 @data={:body=>"<?xml version=\"1.0\"?>\n<ErrorResponse
xmlns=\"http://cloudfront.amazonaws.com/doc/2010-11-01/\"><Error>
<Type>Sender</Type><Code>MalformedXML</Code><Message>1 validation error
detected: Value null at 'distributionConfig.enabled' failed to satisfy
constraint: Member must not be null</Message></Error>
<RequestId>c2b33cda-abee-11e4-8115-b584e1255c70</RequestId>
</ErrorResponse>", :headers=>{"x-amzn-RequestId"=>"c2b33cda-abee-11e4-8115-b584e1255c70",
"Content-Type"=>"text/xml", "Content-Length"=>"371", "Date"=>"Tue, 03
Feb 2015 21:51:07 GMT"}, :status=>400, :remote_ip=>"205.251.242.229",
:local_port=>39733, :local_address=>"10.100.6.203"}, @body="<?xml
version=\"1.0\"?>\n<ErrorResponse
xmlns=\"http://cloudfront.amazonaws.com/doc/2010-11-01/\"><Error>
<Type>Sender</Type><Code>MalformedXML</Code><Message>1 validation error
detected: Value null at 'distributionConfig.enabled' failed to satisfy
constraint: Member must not be null</Message></Error>
<RequestId>c2b33cda-abee-11e4-8115-b584e1255c70</RequestId>
</ErrorResponse>", @headers={"x-amzn-RequestId"=>"c2b33cda-abee-11e4-
8115-b584e1255c70", "Content-Type"=>"text/xml", "Content-Length"=>"371",
"Date"=>"Tue, 03 Feb 2015 21:51:07 GMT"}, @status=400,
@remote_ip="205.251.242.229", @local_port=39733,
@local_address="10.100.6.203">
我找到了信息 here,但不确定如何将信息解析到 ruby 文件中。
似乎很少有博客资料可供我弄清楚如何执行此操作。
谁能给我指出正确的方向?
我发现这个 gist 解释了上下文。
因此,RubyDoc.info link(有问题)表示启用布尔值是一个选项。但是,在 AWS 中它不是(或者它似乎基于我得到的错误)。
但是,要解决这个问题,:Enabled => true 必须在 cdn.distribution 块之外。
希望这对以后正在寻找这个的人有所帮助!
另外,这可能是一个 BUG,因为 Fog 库说这个功能是可选的,但它似乎是 AWS 强制要求的。