Skip to content

Commit 7231e7c

Browse files
authored
bugfix: assume role with credential_source (#3204)
1 parent 606298b commit 7231e7c

File tree

4 files changed

+84
-56
lines changed

4 files changed

+84
-56
lines changed

CHANGELOG.md

Lines changed: 56 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,61 @@
11
# CHANGELOG
22

3-
## 3.358.1 - 2025-10-28
4-
5-
* `Aws\TaxSettings` - Update endpoint ruleset parameters casing
6-
* `Aws\MigrationHubOrchestrator` - Update endpoint ruleset parameters casing
7-
* `Aws\RAM` - Update endpoint ruleset parameters casing
8-
* `Aws\ApplicationSignals` - Added support for CloudWatch Synthetics Canary resources in ListAuditFindings API. This enhancement allows customers to retrieve audit findings specifically for CloudWatch Synthetics canaries and enables service-canary correlation analysis.
9-
* `Aws\Pipes` - Update endpoint ruleset parameters casing
10-
* `Aws\EMRContainers` - Update endpoint ruleset parameters casing
11-
* `Aws\Notifications` - Update endpoint ruleset parameters casing
12-
* `Aws\AppRegistry` - Update endpoint ruleset parameters casing
13-
* `Aws\S3` - Amazon Simple Storage Service / Features: Add conditional writes in CopyObject on destination key to prevent unintended object modifications.
14-
* `Aws\BedrockAgentRuntime` - Update endpoint ruleset parameters casing
15-
* `Aws\GroundStation` - Enable use of AzEl ephemerides
16-
* `Aws\OpenSearchService` - Update endpoint ruleset parameters casing
17-
* `Aws\WorkspacesInstances` - Update endpoint ruleset parameters casing
18-
* `Aws\PartnerCentralSelling` - Update endpoint ruleset parameters casing
19-
* `Aws\ECS` - Amazon ECS supports native linear and canary service deployments, allowing you to shift traffic in increments for more control.
20-
* `Aws\SQS` - Update endpoint ruleset parameters casing
21-
* `Aws\kendra` - Update endpoint ruleset parameters casing
22-
* `Aws\BedrockRuntime` - Update endpoint ruleset parameters casing
23-
* `Aws\Glacier` - Update endpoint ruleset parameters casing
24-
* `Aws\CloudSearchDomain` - Update endpoint ruleset parameters casing
25-
* `Aws\CodeGuruSecurity` - Update endpoint ruleset parameters casing
26-
* `Aws\MediaPackageVod` - Update endpoint ruleset parameters casing
27-
* `Aws\BCMPricingCalculator` - Update endpoint ruleset parameters casing
28-
* `Aws\SupportApp` - Update endpoint ruleset parameters casing
29-
* `Aws\CleanRoomsML` - Update endpoint ruleset parameters casing
30-
* `Aws\ResourceGroups` - Update endpoint ruleset parameters casing
31-
* `Aws\KinesisVideo` - Update endpoint ruleset parameters casing
32-
* `Aws\EFS` - Update endpoint ruleset parameters casing
33-
* `Aws\SageMakerFeatureStoreRuntime` - Update endpoint ruleset parameters casing
34-
* `Aws\XRay` - Update endpoint ruleset parameters casing
35-
* `Aws\WorkSpaces` - Added IPv6 address support for WorkSpaces using Dual-Stack subnets
36-
* `Aws\Organizations` - Added Account State field to the ListDelegatedAdministrators API response.
37-
* `Aws\TrustedAdvisor` - Update endpoint ruleset parameters casing
38-
* `Aws\InspectorScan` - Update endpoint ruleset parameters casing
39-
* `Aws\BackupSearch` - Update endpoint ruleset parameters casing
40-
* `Aws\GameLiftStreams` - Add stream group expiration date and expired status
41-
* `Aws\ElasticTranscoder` - Update endpoint ruleset parameters casing
42-
* `Aws\Cloud9` - Update endpoint ruleset parameters casing
43-
* `Aws\Detective` - Update endpoint ruleset parameters casing
44-
* `Aws\KafkaConnect` - Update endpoint ruleset parameters casing
45-
* `Aws\SageMaker` - Amazon SageMaker now supports deleting training and processing jobs in a terminal status.
46-
* `Aws\SecurityIR` - Update endpoint ruleset parameters casing
47-
* `Aws\ApiGatewayV2` - Update endpoint ruleset parameters casing
48-
* `Aws\S3Control` - Update endpoint ruleset parameters casing
49-
* `Aws\EC2` - This released the DescribeCapacityReservationTopology API.
50-
* `Aws\CloudWatchEvents` - Update endpoint ruleset parameters casing
51-
* `Aws\CodeConnections` - Update endpoint ruleset parameters casing
52-
* `Aws\Lambda` - Added SerializedRequestEntityTooLargeException to Lambda Invoke API
53-
* `Aws\MarketplaceDeployment` - Update endpoint ruleset parameters casing
54-
3+
## 3.359.0 - 2025-10-28
4+
5+
* `Aws\Credentials` - Fixes issue caused by #3203 with role assumption when `credential_source` is specified.
6+
7+
## 3.358.1 - 2025-10-28
8+
9+
* `Aws\TaxSettings` - Update endpoint ruleset parameters casing
10+
* `Aws\MigrationHubOrchestrator` - Update endpoint ruleset parameters casing
11+
* `Aws\RAM` - Update endpoint ruleset parameters casing
12+
* `Aws\ApplicationSignals` - Added support for CloudWatch Synthetics Canary resources in ListAuditFindings API. This enhancement allows customers to retrieve audit findings specifically for CloudWatch Synthetics canaries and enables service-canary correlation analysis.
13+
* `Aws\Pipes` - Update endpoint ruleset parameters casing
14+
* `Aws\EMRContainers` - Update endpoint ruleset parameters casing
15+
* `Aws\Notifications` - Update endpoint ruleset parameters casing
16+
* `Aws\AppRegistry` - Update endpoint ruleset parameters casing
17+
* `Aws\S3` - Amazon Simple Storage Service / Features: Add conditional writes in CopyObject on destination key to prevent unintended object modifications.
18+
* `Aws\BedrockAgentRuntime` - Update endpoint ruleset parameters casing
19+
* `Aws\GroundStation` - Enable use of AzEl ephemerides
20+
* `Aws\OpenSearchService` - Update endpoint ruleset parameters casing
21+
* `Aws\WorkspacesInstances` - Update endpoint ruleset parameters casing
22+
* `Aws\PartnerCentralSelling` - Update endpoint ruleset parameters casing
23+
* `Aws\ECS` - Amazon ECS supports native linear and canary service deployments, allowing you to shift traffic in increments for more control.
24+
* `Aws\SQS` - Update endpoint ruleset parameters casing
25+
* `Aws\kendra` - Update endpoint ruleset parameters casing
26+
* `Aws\BedrockRuntime` - Update endpoint ruleset parameters casing
27+
* `Aws\Glacier` - Update endpoint ruleset parameters casing
28+
* `Aws\CloudSearchDomain` - Update endpoint ruleset parameters casing
29+
* `Aws\CodeGuruSecurity` - Update endpoint ruleset parameters casing
30+
* `Aws\MediaPackageVod` - Update endpoint ruleset parameters casing
31+
* `Aws\BCMPricingCalculator` - Update endpoint ruleset parameters casing
32+
* `Aws\SupportApp` - Update endpoint ruleset parameters casing
33+
* `Aws\CleanRoomsML` - Update endpoint ruleset parameters casing
34+
* `Aws\ResourceGroups` - Update endpoint ruleset parameters casing
35+
* `Aws\KinesisVideo` - Update endpoint ruleset parameters casing
36+
* `Aws\EFS` - Update endpoint ruleset parameters casing
37+
* `Aws\SageMakerFeatureStoreRuntime` - Update endpoint ruleset parameters casing
38+
* `Aws\XRay` - Update endpoint ruleset parameters casing
39+
* `Aws\WorkSpaces` - Added IPv6 address support for WorkSpaces using Dual-Stack subnets
40+
* `Aws\Organizations` - Added Account State field to the ListDelegatedAdministrators API response.
41+
* `Aws\TrustedAdvisor` - Update endpoint ruleset parameters casing
42+
* `Aws\InspectorScan` - Update endpoint ruleset parameters casing
43+
* `Aws\BackupSearch` - Update endpoint ruleset parameters casing
44+
* `Aws\GameLiftStreams` - Add stream group expiration date and expired status
45+
* `Aws\ElasticTranscoder` - Update endpoint ruleset parameters casing
46+
* `Aws\Cloud9` - Update endpoint ruleset parameters casing
47+
* `Aws\Detective` - Update endpoint ruleset parameters casing
48+
* `Aws\KafkaConnect` - Update endpoint ruleset parameters casing
49+
* `Aws\SageMaker` - Amazon SageMaker now supports deleting training and processing jobs in a terminal status.
50+
* `Aws\SecurityIR` - Update endpoint ruleset parameters casing
51+
* `Aws\ApiGatewayV2` - Update endpoint ruleset parameters casing
52+
* `Aws\S3Control` - Update endpoint ruleset parameters casing
53+
* `Aws\EC2` - This released the DescribeCapacityReservationTopology API.
54+
* `Aws\CloudWatchEvents` - Update endpoint ruleset parameters casing
55+
* `Aws\CodeConnections` - Update endpoint ruleset parameters casing
56+
* `Aws\Lambda` - Added SerializedRequestEntityTooLargeException to Lambda Invoke API
57+
* `Aws\MarketplaceDeployment` - Update endpoint ruleset parameters casing
58+
5559
## 3.358.0 - 2025-10-27
5660

5761
* `Aws\Credentials` - Updates STS providers to accept region passed from client, directly through in-code or profile configuration, or from `AWS_REGION`. Adds notice regarding fallback region.

src/Credentials/CredentialProvider.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1035,7 +1035,7 @@ private static function getCredentialsFromSsoService($ssoProfile, $clientRegion,
10351035
* @return StsClient
10361036
*/
10371037
private static function createDefaultStsClient(
1038-
CredentialsInterface $credentials,
1038+
CredentialsInterface|callable $credentials,
10391039
?string $region
10401040
): StsClient
10411041
{

src/Sdk.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -833,7 +833,7 @@
833833
*/
834834
class Sdk
835835
{
836-
const VERSION = '3.358.1';
836+
const VERSION = '3.359.0';
837837

838838
/** @var array Arguments for creating clients */
839839
private $args;

tests/Credentials/CredentialProviderTest.php

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -689,7 +689,7 @@ public function testCreatesFromRoleArn(): void
689689
$this->assertFalse($creds->isExpired());
690690
}
691691

692-
public function testCreatesFromRoleArnEmitsNoticeOnFallbackRegion(): void
692+
public function testCreatesFromRoleArnWithSourceProfileEmitsNoticeOnFallbackRegion(): void
693693
{
694694
$this->expectNotice();
695695
$this->expectNoticeMessage(
@@ -702,14 +702,38 @@ public function testCreatesFromRoleArnEmitsNoticeOnFallbackRegion(): void
702702
aws_access_key_id = foo
703703
aws_secret_access_key = defaultSecret
704704
[assume]
705-
role_arn = arn:aws:iam::012345678910:role/role_name
705+
role_arn = arn:aws:iam::foo:role/role_name
706706
source_profile = default
707707
role_session_name = foobar
708708
EOT;
709709
file_put_contents($awsDir . '/credentials', $ini);
710710
call_user_func(CredentialProvider::ini('assume', null))->wait();
711711
}
712712

713+
public function testCreatesFromRoleArnWithCredentialSourceEmitsNoticeOnFallbackRegion(): void
714+
{
715+
$this->expectNotice();
716+
$this->expectNoticeMessage(
717+
'NOTICE: STS client created without explicit `region` configuration'
718+
);
719+
720+
$awsDir = $this->createAwsHome();
721+
$ini = <<<EOT
722+
[assume-with-credential-source]
723+
role_arn=arn:aws:iam::foo:role/role_name
724+
credential_source=Environment
725+
role_session_name=test_session
726+
EOT;
727+
file_put_contents($awsDir . '/credentials', $ini);
728+
729+
// Set up environment credentials for credential_source=Environment
730+
putenv(CredentialProvider::ENV_KEY . '=foo');
731+
putenv(CredentialProvider::ENV_SECRET . '=bar');
732+
733+
734+
call_user_func(CredentialProvider::ini('assume-with-credential-source', null))->wait();
735+
}
736+
713737
public function testCreatesFromRoleArnCatchesCircular(): void
714738
{
715739
$this->expectExceptionMessage("Circular source_profile reference found.");

0 commit comments

Comments
 (0)