Skip to content

Commit d1abbe8

Browse files
committed
refactor: move aws session token resolution to configuration and inject into aws clients
1 parent 7a6d96b commit d1abbe8

9 files changed

Lines changed: 16 additions & 13 deletions

src/CloudProvider/Aws/AbstractClient.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,13 @@ abstract class AbstractClient
5858
/**
5959
* Constructor.
6060
*/
61-
public function __construct(ClientInterface $client, string $key, string $region, string $secret)
61+
public function __construct(ClientInterface $client, string $key, string $region, string $secret, string $securityToken = '')
6262
{
6363
$this->client = $client;
6464
$this->key = $key;
6565
$this->region = $region;
6666
$this->secret = $secret;
67-
$this->securityToken = getenv('AWS_SESSION_TOKEN') ?: '';
67+
$this->securityToken = $securityToken;
6868
}
6969

7070
/**

src/CloudProvider/Aws/CloudFrontClient.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ class CloudFrontClient extends AbstractClient implements ContentDeliveryNetworkP
3939
/**
4040
* {@inheritdoc}
4141
*/
42-
public function __construct(ClientInterface $client, string $distributionId, string $key, string $secret)
42+
public function __construct(ClientInterface $client, string $distributionId, string $key, string $secret, string $securityToken = '')
4343
{
44-
parent::__construct($client, $key, 'us-east-1', $secret);
44+
parent::__construct($client, $key, 'us-east-1', $secret, $securityToken);
4545

4646
$this->distributionId = $distributionId;
4747
$this->invalidationPaths = [];

src/CloudProvider/Aws/LambdaClient.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ class LambdaClient extends AbstractClient implements ConsoleClientInterface
3939
/**
4040
* {@inheritdoc}
4141
*/
42-
public function __construct(ClientInterface $client, string $functionName, string $key, string $region, string $secret, string $siteUrl)
42+
public function __construct(ClientInterface $client, string $functionName, string $key, string $region, string $secret, string $siteUrl, string $securityToken = '')
4343
{
44-
parent::__construct($client, $key, $region, $secret);
44+
parent::__construct($client, $key, $region, $secret, $securityToken);
4545

4646
$this->functionName = $functionName;
4747
$this->siteUrl = $siteUrl;

src/CloudProvider/Aws/S3Client.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ class S3Client extends AbstractClient implements CloudStorageClientInterface
3131
/**
3232
* Constructor.
3333
*/
34-
public function __construct(ClientInterface $client, string $bucket, string $key, string $region, string $secret)
34+
public function __construct(ClientInterface $client, string $bucket, string $key, string $region, string $secret, string $securityToken = '')
3535
{
36-
parent::__construct($client, $key, $region, $secret);
36+
parent::__construct($client, $key, $region, $secret, $securityToken);
3737

3838
$this->bucket = $bucket;
3939
}

src/Configuration/CloudProviderConfiguration.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ public function modify(Container $container)
4646
$container['cloud_provider_secret'] = $container->service(function () {
4747
return getenv('AWS_SECRET_ACCESS_KEY') ?: (defined('YMIR_CLOUD_PROVIDER_SECRET') ? YMIR_CLOUD_PROVIDER_SECRET : '');
4848
});
49+
$container['cloud_provider_security_token'] = $container->service(function () {
50+
return getenv('AWS_SESSION_TOKEN') ?: '';
51+
});
4952
$container['cloud_provider_private_store'] = $container->service(function () {
5053
return getenv('YMIR_PRIVATE_STORE') ?: (defined('YMIR_CLOUD_PROVIDER_PRIVATE_STORE') ? YMIR_CLOUD_PROVIDER_PRIVATE_STORE : '');
5154
});

src/Configuration/CloudStorageConfiguration.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,11 @@ class CloudStorageConfiguration implements ContainerConfigurationInterface
3030
public function modify(Container $container)
3131
{
3232
$container['private_cloud_storage_client'] = $container->service(function (Container $container) {
33-
return new S3Client($container['ymir_http_client'], $container['cloud_provider_private_store'], $container['cloud_provider_key'], $container['cloud_provider_region'], $container['cloud_provider_secret']);
33+
return new S3Client($container['ymir_http_client'], $container['cloud_provider_private_store'], $container['cloud_provider_key'], $container['cloud_provider_region'], $container['cloud_provider_secret'], $container['cloud_provider_security_token']);
3434
});
3535
$container['private_cloud_storage_protocol'] = PrivateCloudStorageStreamWrapper::getProtocol().'://';
3636
$container['public_cloud_storage_client'] = $container->service(function (Container $container) {
37-
return new S3Client($container['ymir_http_client'], $container['cloud_provider_public_store'], $container['cloud_provider_key'], $container['cloud_provider_region'], $container['cloud_provider_secret']);
37+
return new S3Client($container['ymir_http_client'], $container['cloud_provider_public_store'], $container['cloud_provider_key'], $container['cloud_provider_region'], $container['cloud_provider_secret'], $container['cloud_provider_security_token']);
3838
});
3939
$container['public_cloud_storage_protocol'] = PublicCloudStorageStreamWrapper::getProtocol().'://';
4040
}

src/Configuration/ConsoleConfiguration.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public function modify(Container $container)
3939
];
4040
});
4141
$container['console_client'] = $container->service(function (Container $container) {
42-
return new LambdaClient($container['ymir_http_client'], $container['cloud_provider_function_name'], $container['cloud_provider_key'], $container['cloud_provider_region'], $container['cloud_provider_secret'], $container['site_url']);
42+
return new LambdaClient($container['ymir_http_client'], $container['cloud_provider_function_name'], $container['cloud_provider_key'], $container['cloud_provider_region'], $container['cloud_provider_secret'], $container['site_url'], $container['cloud_provider_security_token']);
4343
});
4444
$container['wp_cli'] = $container->service(function () {
4545
return new Console\WpCli();

src/Configuration/EmailConfiguration.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class EmailConfiguration implements ContainerConfigurationInterface
2929
public function modify(Container $container)
3030
{
3131
$container['email_client'] = $container->service(function (Container $container) {
32-
return new SesClient($container['ymir_http_client'], $container['cloud_provider_key'], $container['cloud_provider_region'], $container['cloud_provider_secret']);
32+
return new SesClient($container['ymir_http_client'], $container['cloud_provider_key'], $container['cloud_provider_region'], $container['cloud_provider_secret'], $container['cloud_provider_security_token']);
3333
});
3434
$container['email'] = function (Container $container) {
3535
return new Email($container['event_manager'], $container['default_email_from'], $container['file_manager'], $container['phpmailer'], $container['blog_charset']);

src/Configuration/PageCacheConfiguration.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class PageCacheConfiguration implements ContainerConfigurationInterface
2828
public function modify(Container $container)
2929
{
3030
$container['cloudfront_client'] = $container->service(function (Container $container) {
31-
return new CloudFrontClient($container['ymir_http_client'], getenv('YMIR_DISTRIBUTION_ID'), $container['cloud_provider_key'], $container['cloud_provider_secret']);
31+
return new CloudFrontClient($container['ymir_http_client'], getenv('YMIR_DISTRIBUTION_ID'), $container['cloud_provider_key'], $container['cloud_provider_secret'], $container['cloud_provider_security_token']);
3232
});
3333
$container['page_caching_invalidation_disabled'] = $container->service(function (Container $container) {
3434
if (false !== getenv('YMIR_DISABLE_PAGE_CACHING')) {

0 commit comments

Comments
 (0)