2018-10-11 15:00:23 -07:00
< ? php
2018-12-28 10:35:52 -08:00
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2018-10-11 15:00:23 -07:00
// SPDX-License-Identifier: Apache-2.0
2024-02-05 10:49:20 -07:00
2018-10-11 15:00:23 -07:00
/*
* ABOUT THIS PHP SAMPLE: This sample is part of the SDK for PHP Developer Guide topic at
* https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/iam-examples-working-with-policies.html
*
2019-02-01 21:33:08 -08:00
*
*
2018-10-11 15:00:23 -07:00
*/
2019-02-01 21:33:08 -08:00
// snippet-start:[iam.php.attach_user_policy.complete]
// snippet-start:[iam.php.attach_user_policy.import]
2024-02-05 10:49:20 -07:00
2018-10-11 15:00:23 -07:00
require 'vendor/autoload.php' ;
2024-02-05 10:49:20 -07:00
2018-10-11 15:00:23 -07:00
use Aws\Exception\AwsException ;
2019-02-01 21:33:08 -08:00
use Aws\Iam\IamClient ;
2024-02-05 10:49:20 -07:00
2019-02-01 21:33:08 -08:00
// snippet-end:[iam.php.attach_user_policy.import]
2024-02-05 10:49:20 -07:00
2018-10-11 15:00:23 -07:00
/**
* Attaches the specified policy to the specified user
*
* This code expects that you have AWS credentials set up per:
* https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials.html
*/
2024-02-05 10:49:20 -07:00
2019-02-01 21:33:08 -08:00
//Create an IAM Client
// snippet-start:[iam.php.attach_user_policy.main]
2018-10-11 15:00:23 -07:00
$client = new IamClient ([
'profile' => 'default' ,
'region' => 'us-west-2' ,
'version' => '2010-05-08'
]);
2024-02-05 10:49:20 -07:00
2018-10-11 15:00:23 -07:00
$userName = 'USER_NAME' ;
2024-02-05 10:49:20 -07:00
2018-10-11 15:00:23 -07:00
$policyName = 'AmazonDynamoDBFullAccess' ;
2024-02-05 10:49:20 -07:00
2018-10-11 15:00:23 -07:00
$policyArn = 'arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess' ;
2024-02-05 10:49:20 -07:00
2018-10-11 15:00:23 -07:00
try {
$attachedUserPolicies = $client -> getIterator ( 'ListAttachedUserPolicies' , ([
'UserName' => $userName ,
]));
if ( count ( $attachedUserPolicies ) > 0 ) {
foreach ( $attachedUserPolicies as $attachedUserPolicy ) {
if ( $attachedUserPolicy [ 'PolicyName' ] == $policyName ) {
echo $policyName . " is already attached to this role. \n " ;
exit ();
}
2024-02-05 10:49:20 -07:00
}
}
2018-10-11 15:00:23 -07:00
$result = $client -> attachUserPolicy ( array (
// UserName is required
'UserName' => $userName ,
// PolicyArn is required
'PolicyArn' => $policyArn ,
));
var_dump ( $result );
} catch ( AwsException $e ) {
// output error message if fails
error_log ( $e -> getMessage ());
}
2024-02-05 10:49:20 -07:00
2019-02-01 21:33:08 -08:00
// snippet-end:[iam.php.attach_user_policy.main]
// snippet-end:[iam.php.attach_user_policy.complete]