View Source AlibabaCloudKit.Signature.ACS3 (alibaba_cloud_kit v1.1.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)