1AWS::Signature4(3) User Contributed Perl Documentation AWS::Signature4(3)
2
3
4
6 AWS::Signature4 - Create a version4 signature for Amazon Web Services
7
9 use AWS::Signature4;
10 use HTTP::Request::Common;
11 use LWP;
12
13 my $signer = AWS::Signature4->new(-access_key => 'AKIDEXAMPLE',
14 -secret_key => 'wJalrXUtnFEMI/K7MDENG+bPxRfiCYEXAMPLEKEY');
15 my $ua = LWP::UserAgent->new();
16
17 # Example POST request
18 my $request = POST('https://iam.amazonaws.com',
19 [Action=>'ListUsers',
20 Version=>'2010-05-08']);
21 $signer->sign($request);
22 my $response = $ua->request($request);
23
24 # Example GET request
25 my $uri = URI->new('https://iam.amazonaws.com');
26 $uri->query_form(Action=>'ListUsers',
27 Version=>'2010-05-08');
28
29 my $url = $signer->signed_url($uri); # This gives a signed URL that can be fetched by a browser
30 my $response = $ua->get($url);
31
33 This module implement's Amazon Web Service's Signature version 4
34 (http://docs.aws.amazon.com/general/latest/gr/signature-version-4.html).
35
37 $signer = AWS::Signature4->new(-access_key => $account_id,-secret_key
38 => $private_key);
39 Create a signing object using your AWS account ID and secret key.
40 You may also use the temporary security tokens received from
41 Amazon's STS service, either by passing the access and secret keys
42 derived from the token, or by passing a VM::EC2::Security::Token
43 produced by the VM::EC2 module.
44
45 Arguments:
46
47 Argument name Argument Value
48 ------------- --------------
49 -access_key An AWS acccess key (account ID)
50
51 -secret_key An AWS secret key
52
53 -security_token A VM::EC2::Security::Token object
54
55 If a security token is provided, it overrides any values given for
56 -access_key or -secret_key.
57
58 If the environment variables EC2_ACCESS_KEY and/or EC2_SECRET_KEY
59 are set, their contents are used as defaults for -acccess_key and
60 -secret_key.
61
62 $signer->sign($request [,$region] [,$payload_sha256_hex])
63 Given an HTTP::Request object, add the headers required by AWS and
64 then sign it with a version 4 signature by adding an
65 "Authorization" header.
66
67 The request must include a URL from which the AWS endpoint and
68 service can be derived, such as "ec2.us-east-1.amazonaws.com." In
69 some cases (e.g. S3 bucket operations) the endpoint does not
70 indicate the region. In this case, the region can be forced by
71 passing a defined value for $region. The current date and time will
72 be added to the request using an "X-Amz-Date header." To force the
73 date and time to a fixed value, include the "Date" header in the
74 request.
75
76 The request content, or "payload" is retrieved from the
77 HTTP::Request object by calling its content() method.. Under some
78 circumstances the payload is not included directly in the request,
79 but is in an external file that will be uploaded as the request is
80 executed. In this case, you must pass a second argument containing
81 the results of running sha256_hex() (from the Digest::SHA module)
82 on the content.
83
84 The method returns a true value if successful. On errors, it will
85 throw an exception.
86
87 $url = $signer->signed_url($request)
88 This method will generate a signed GET URL for the request. The URL
89 will include everything needed to perform the request.
90
91 my $url $signer->signed_url($request_or_uri [,$expires])
92 Pass an HTTP::Request, a URI object, or just a plain URL string
93 containing the proper endpoint and parameters needed for an AWS
94 REST API Call. This method will return an appropriately signed
95 request as a URI object, which can be shared with non-AWS users for
96 the purpose of, e.g., accessing an object in a private S3 bucket.
97
98 Pass an optional $expires argument to indicate that the URL will
99 only be valid for a finite period of time. The value of the
100 argument is in seconds.
101
102 $signing_key =
103 AWS::Signature4->signing_key($secret_access_key,$service_name,$region,$date)
104 Return just the signing key in the event you wish to roll your own
105 signature.
106
108 VM::EC2
109
111 Lincoln Stein <lincoln.stein@gmail.com>.
112
113 Copyright (c) 2014 Ontario Institute for Cancer Research
114
115 This package and its accompanying libraries is free software; you can
116 redistribute it and/or modify it under the terms of the GPL (either
117 version 1, or at your option, any later version) or the Artistic
118 License 2.0. Refer to LICENSE for the full license text. In addition,
119 please see DISCLAIMER.txt for disclaimers of warranty.
120
122 Hey! The above document had some coding errors, which are explained
123 below:
124
125 Around line 145:
126 '=item' outside of any '=over'
127
128 Around line 377:
129 You forgot a '=back' before '=head1'
130
131
132
133perl v5.36.0 2022-07-22 AWS::Signature4(3)