AWS Cloudfront文件通过REST API和Powershell失效

时间:2017-05-03 20:49:37

标签: powershell amazon-web-services amazon-cloudfront

我正在尝试编写一个PowerShell脚本来使AWS Cloudfront发行版的对象无效(只是一个特定的文件),并且不确定如何生成他们要求的“签名URL”。

到目前为止我的代码是:

<ErrorResponse xmlns="http://cloudfront.amazonaws.com/doc/2017-03-25/"><Error><Type>Sender</Type><Code>SignatureDoesNotMatch</Code><Message>The request 
signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation 
for details.
The Canonical String for this request should have been
'POST
/2017-03-25/distribution/blabla/invalidation
content-type:text/xml
host:cloudfront.amazonaws.com
x-amz-date:20170503T203650Z
content-type;host;x-amz-date
blabla'
The String-to-Sign should have been
'AWS4-HMAC-SHA256
20170503T203650Z
20170503/us-east-1/cloudfront/aws4_request
blabla'
</Message></Error><RequestId>123-123</RequestId></ErrorResponse>
At line:1 char:1

回复是:

{{1}}

很明显我对我所签署的URL字符串做错了,但是它是什么? 在Powershell中无法在互联网上找到任何示例(不是AWS文档或任何其他博客)。

由于

1 个答案:

答案 0 :(得分:3)

AWS开发了一个PowerShell模块,用于与名为AWS Tools for PowerShell的AWS API进行交互。此模块专门为您处理请求构建和签名,因此这种调用原始API的方法变得不必要。

您可以专门使用此功能来使具有New-CFInvalidation cmdlet的CloudFront分配中的对象无效。将要使其无效的路径写入Paths_Item参数。

签名:

New-CFInvalidation
    -DistributionId <String>
    -InvalidationBatch_CallerReference <String>
    -Paths_Item <String[]>
    -Paths_Quantity <Int32>
    -Force <SwitchParameter>

进一步阅读