Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 3 additions & 12 deletions repository/AWS-Core/AWSCredentials.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -116,18 +116,9 @@ AWSCredentials >> provider: anAWSCredentialsProvider [

{ #category : #actions }
AWSCredentials >> refresh [
self provider
ifNotNil: [:prov | self refreshWith: prov getCredentials ]
ifNil: [ ^ self error: 'Not possible to refresh AWS Credentials.' ]
]

{ #category : #actions }
AWSCredentials >> refreshWith: awsCredentials [
self
setAccessKeyId: awsCredentials accessKeyId
secretKey: awsCredentials secretKey
sessionToken: awsCredentials sessionToken
expirationTime: awsCredentials expirationTime
^ self provider
ifNotNil: [:prov | prov getCredentials ]
ifNil: [ self error: 'Not possible to refresh AWS Credentials.' ]
]

{ #category : #accessing }
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
Class {
#name : #AWSEC2CredentialsProvider,
#superclass : #AWSCredentialsProvider,
#category : #'AWS-EC2InstanceMetadata'
}

{ #category : #actions }
AWSEC2CredentialsProvider class >> getCredentials [
| json |
json := AWSEC2Service new getCredentials.
^ (AWSCredentials fromJsonString: json)
provider: self;
yourself
]
Class {
#name : #AWSEC2CredentialsProvider,
#superclass : #AWSCredentialsProvider,
#category : #'AWS-EC2InstanceMetadata'
}

{ #category : #actions }
AWSEC2CredentialsProvider class >> getCredentials [
| response |
response := AWSEC2Service new getCredentials.
^ response
ifNotNil: [ :json |
(AWSCredentials fromJsonString: json)
provider: self;
yourself ]
]
9 changes: 0 additions & 9 deletions repository/AWS-EC2InstanceMetadata/AWSEC2Metadata.class.st

This file was deleted.

214 changes: 107 additions & 107 deletions repository/AWS-EC2InstanceMetadata/AWSEC2Service.class.st
Original file line number Diff line number Diff line change
@@ -1,107 +1,107 @@
Class {
#name : #AWSEC2Service,
#superclass : #Object,
#instVars : [
'host',
'httpClient'
],
#category : #'AWS-EC2InstanceMetadata'
}
{ #category : #initialization }
AWSEC2Service >> createHttpClient [
^ZnClient new
loggingOff;
systemPolicy;
enforceHttpSuccess: false;
enforceAcceptContentType: false;
yourself
]
{ #category : #resources }
AWSEC2Service >> credentialsUrl [
^ZnUrl fromString: self host, '/latest/meta-data/iam/security-credentials/'
]
{ #category : #api }
AWSEC2Service >> executeRequest: aRequest [
self getSecurityToken
ifNotNil:
[ :token | aRequest headers at: AWSHeaders x_aws_ec2_metadata_token put: token ].
^self httpClient
request: aRequest;
execute;
response
]
{ #category : #api }
AWSEC2Service >> getCredentials [
"self new getCredentials"
| request response role |
role := self getRole.
role ifNil: [ ^ nil ].
request := ZnRequest get: self credentialsUrl / role.
response := self executeRequest: request.
^response contents
]
{ #category : #api }
AWSEC2Service >> getRole [
| request response |
request := ZnRequest get: self credentialsUrl.
response := self executeRequest: request.
response isError ifTrue: [ ^nil ].
^response contents
]
{ #category : #api }
AWSEC2Service >> getSecurityToken [
"self new getSecurityToken"
| request response |
request := ZnRequest put: self tokenUrl.
request headers at: AWSHeaders x_aws_ec2_metadata_token_ttl_seconds put: '21600'.
response := self httpClient request: request; execute; response.
response isBadRequest ifTrue: [ ^nil ].
^response contents
]
{ #category : #resources }
AWSEC2Service >> host [
^host ifNil: [ host := 'http://169.254.169.254' ]
]
{ #category : #accessing }
AWSEC2Service >> httpClient [
^httpClient ifNil: [ httpClient := self createHttpClient ]
]
{ #category : #resources }
AWSEC2Service >> metadataUrl [
^self host, '/latest/meta-data/'
]
{ #category : #resources }
AWSEC2Service >> tokenUrl [
^self host, '/latest/api/token'
]
{ #category : #resources }
AWSEC2Service >> userdataUrl [
^self host, '/latest/user-data'
]
Class {
#name : #AWSEC2Service,
#superclass : #Object,
#instVars : [
'host',
'httpClient'
],
#category : #'AWS-EC2InstanceMetadata'
}

{ #category : #initialization }
AWSEC2Service >> createHttpClient [
^ZnClient new
loggingOff;
systemPolicy;
enforceHttpSuccess: false;
enforceAcceptContentType: false;
yourself

]

{ #category : #resources }
AWSEC2Service >> credentialsUrl [
^ZnUrl fromString: self host, '/latest/meta-data/iam/security-credentials/'
]

{ #category : #api }
AWSEC2Service >> executeRequest: aRequest [

self getSecurityToken
ifNotNil:
[ :token | aRequest headers at: AWSHeaders x_aws_ec2_metadata_token put: token ].

^self httpClient
request: aRequest;
execute;
response
]

{ #category : #api }
AWSEC2Service >> getCredentials [
"self new getCredentials"

| request response role |
role := self getRole.
role ifNil: [ ^ nil ].
request := ZnRequest get: self credentialsUrl / role.

response := self executeRequest: request.

^response contents
]

{ #category : #api }
AWSEC2Service >> getRole [
| request response |

request := ZnRequest get: self credentialsUrl.

response := self executeRequest: request.

response isSuccess ifFalse: [ ^nil ].

^response contents
]

{ #category : #api }
AWSEC2Service >> getSecurityToken [
"self new getSecurityToken"
| request response |

request := ZnRequest put: self tokenUrl.
request headers at: AWSHeaders x_aws_ec2_metadata_token_ttl_seconds put: '21600'.

response := self httpClient request: request; execute; response.

response isSuccess ifFalse: [ ^nil ].

^response contents
]

{ #category : #resources }
AWSEC2Service >> host [

^host ifNil: [ host := 'http://169.254.169.254' ]
]

{ #category : #accessing }
AWSEC2Service >> httpClient [

^httpClient ifNil: [ httpClient := self createHttpClient ]
]

{ #category : #resources }
AWSEC2Service >> metadataUrl [
^self host, '/latest/meta-data/'
]

{ #category : #resources }
AWSEC2Service >> tokenUrl [
^self host, '/latest/api/token'
]

{ #category : #resources }
AWSEC2Service >> userdataUrl [
^self host, '/latest/user-data'
]
26 changes: 13 additions & 13 deletions repository/AWS-EC2InstanceMetadata/AWSHeaders.extension.st
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
Extension { #name : #AWSHeaders }
{ #category : #'*AWS-EC2InstanceMetadata' }
AWSHeaders class >> x_aws_ec2_metadata_token [
^'x-aws-ec2-metadata-token'
]
{ #category : #'*AWS-EC2InstanceMetadata' }
AWSHeaders class >> x_aws_ec2_metadata_token_ttl_seconds [
^'x-aws-ec2-metadata-token-ttl-seconds'
]
Extension { #name : #AWSHeaders }

{ #category : #'*AWS-EC2InstanceMetadata' }
AWSHeaders class >> x_aws_ec2_metadata_token [

^'x-aws-ec2-metadata-token'
]

{ #category : #'*AWS-EC2InstanceMetadata' }
AWSHeaders class >> x_aws_ec2_metadata_token_ttl_seconds [

^'x-aws-ec2-metadata-token-ttl-seconds'
]
2 changes: 1 addition & 1 deletion repository/AWS-EC2InstanceMetadata/package.st
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Package { #name : #'AWS-EC2InstanceMetadata' }
Package { #name : #'AWS-EC2InstanceMetadata' }