View Source AlibabaCloudKit.Signature.ACS3 (alibaba_cloud_kit v2.0.0)
An implementation for ACS V3 signature.
This type of signature is used by most of RPC style APIs:
- Elastic Compute Service (ECS)
- Content Delivery Network (CDN)
- ApsaraDB RDS
- ...
Read more at:
Summary
Functions
Signs a request.
Types
@type access_key_id() :: String.t()
@type access_key_secret() :: String.t()
@type at() :: DateTime.t() | nil
@type sign_opt() :: {:access_key_id, access_key_id()} | {:access_key_secret, access_key_secret()} | {:at, at()}
@type sign_opts() :: [sign_opt()]
Functions
Signs a request.
Automatically added request headers
Following headers will be added to the request automatically:
host
x-acs-date
x-acs-content-sha256
x-acs-signature-nonce
authorization
Examples
Build and sign a GET request
request = HTTPSpec.Request.new!(
method: :get,
scheme: :https,
host: "ecs-us-west-1.aliyuncs.com",
port: 443,
path: "/",
query: URI.encode_query(%{"RegionId" => "us-west-1"}, :rfc3986),
headers: [
{"x-acs-version", "2014-05-26"},
{"x-acs-action", "DescribeInstanceStatus"}
]
)
opts = [
access_key_id: "...",
access_key_secret: "..."
]
AlibabaCloudKit.Signature.ACS3.sign!(request, opts)
Build and sign a POST request
request = HTTPSpec.Request.new!(
method: :post,
scheme: :https,
host: "ecs-us-west-1.aliyuncs.com",
port: 443,
path: "/",
headers: [
{"content-type", "application/x-www-form-urlencoded"},
{"x-acs-version", "2014-05-26"},
{"x-acs-action", "DescribeInstanceStatus"}
],
body: URI.encode_query(%{"RegionId" => "us-west-1"}, :www_form)
)
opts = [
access_key_id: "...",
access_key_secret: "..."
]
AlibabaCloudKit.Signature.ACS3.sign!(request, opts)