protected function reloadCredentialsProvider()

in src/Providers/CLIProfileCredentialsProvider.php [64:146]


    protected function reloadCredentialsProvider($profileFile, $profileName)
    {
        if (!Helper::inOpenBasedir($profileFile)) {
            throw new RuntimeException('Unable to open credentials file: ' . $profileFile);
        }

        if (!\is_readable($profileFile) || !\is_file($profileFile)) {
            throw new RuntimeException('Credentials file is not readable: ' . $profileFile);
        }

        $jsonContent = \file_get_contents($profileFile);
        $fileArray = json_decode($jsonContent, true);

        if (\is_array($fileArray) && !empty($fileArray)) {
            if (is_null($profileName) || $profileName === '') {
                $profileName = $fileArray['current'];
            }
            if (isset($fileArray['profiles'])) {
                foreach ($fileArray['profiles'] as $profile) {
                    if (Helper::unsetReturnNull($profile, 'name') === $profileName) {
                        switch (Helper::unsetReturnNull($profile, 'mode')) {
                            case 'AK':
                                return new StaticAKCredentialsProvider([
                                    'accessKeyId' => Helper::unsetReturnNull($profile, 'access_key_id'),
                                    'accessKeySecret' => Helper::unsetReturnNull($profile, 'access_key_secret'),
                                ]);
                            case 'StsToken':
                                return new StaticSTSCredentialsProvider([
                                    'accessKeyId' => Helper::unsetReturnNull($profile, 'access_key_id'),
                                    'accessKeySecret' => Helper::unsetReturnNull($profile, 'access_key_secret'),
                                    'securityToken' => Helper::unsetReturnNull($profile, 'sts_token'),
                                ]);
                            case 'RamRoleArn':
                                $innerProvider = new StaticAKCredentialsProvider([
                                    'accessKeyId' => Helper::unsetReturnNull($profile, 'access_key_id'),
                                    'accessKeySecret' => Helper::unsetReturnNull($profile, 'access_key_secret'),
                                ]);
                                return new RamRoleArnCredentialsProvider([
                                    'credentialsProvider' => $innerProvider,
                                    'roleArn' => Helper::unsetReturnNull($profile, 'ram_role_arn'),
                                    'roleSessionName' => Helper::unsetReturnNull($profile, 'ram_session_name'),
                                    'durationSeconds' => Helper::unsetReturnNull($profile, 'expired_seconds'),
                                    'policy' => Helper::unsetReturnNull($profile, 'policy'),
                                    'externalId' => Helper::unsetReturnNull($profile, 'external_id'),
                                    'stsRegionId' => Helper::unsetReturnNull($profile, 'sts_region'),
                                    'enableVpc' => Helper::unsetReturnNull($profile, 'enable_vpc'),
                                ]);
                            case 'EcsRamRole':
                                return new EcsRamRoleCredentialsProvider([
                                    'roleName' => Helper::unsetReturnNull($profile, 'ram_role_name'),
                                ]);
                            case 'OIDC':
                                return new OIDCRoleArnCredentialsProvider([
                                    'roleArn' => Helper::unsetReturnNull($profile, 'ram_role_arn'),
                                    'oidcProviderArn' => Helper::unsetReturnNull($profile, 'oidc_provider_arn'),
                                    'oidcTokenFilePath' => Helper::unsetReturnNull($profile, 'oidc_token_file'),
                                    'roleSessionName' => Helper::unsetReturnNull($profile, 'ram_session_name'),
                                    'durationSeconds' => Helper::unsetReturnNull($profile, 'expired_seconds'),
                                    'policy' => Helper::unsetReturnNull($profile, 'policy'),
                                    'stsRegionId' => Helper::unsetReturnNull($profile, 'sts_region'),
                                    'enableVpc' => Helper::unsetReturnNull($profile, 'enable_vpc'),
                                ]);
                            case 'ChainableRamRoleArn':
                                $previousProvider = $this->reloadCredentialsProvider($profileFile, Helper::unsetReturnNull($profile, 'source_profile'));
                                return new RamRoleArnCredentialsProvider([
                                    'credentialsProvider' => $previousProvider,
                                    'roleArn' => Helper::unsetReturnNull($profile, 'ram_role_arn'),
                                    'roleSessionName' => Helper::unsetReturnNull($profile, 'ram_session_name'),
                                    'durationSeconds' => Helper::unsetReturnNull($profile, 'expired_seconds'),
                                    'policy' => Helper::unsetReturnNull($profile, 'policy'),
                                    'externalId' => Helper::unsetReturnNull($profile, 'external_id'),
                                    'stsRegionId' => Helper::unsetReturnNull($profile, 'sts_region'),
                                    'enableVpc' => Helper::unsetReturnNull($profile, 'enable_vpc'),
                                ]);
                            default:
                                throw new RuntimeException('Unsupported credential mode from CLI credentials file: ' . Helper::unsetReturnNull($profile, 'mode'));
                        }
                    }
                }
            }
        }
        throw new RuntimeException('Failed to get credential from CLI credentials file: ' . $profileFile);
    }