Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Demandes grâce aux informations d'identification de sécurité temporaires de l'utilisateur fédéré
Vous pouvez demander des informations d'identification de sécurité temporaires et les fournir à vos utilisateurs fédérés ou aux applications qui ont besoin d'accéder à vos AWS ressources. Cette section fournit des exemples de la manière dont vous pouvez utiliser le AWS SDK pour obtenir des informations d'identification de sécurité temporaires pour vos utilisateurs fédérés ou vos applications et envoyer des demandes authentifiées à Amazon S3 à l'aide de ces informations d'identification. Pour obtenir la liste des AWS SDK disponibles, consultez la section Exemples de code et de bibliothèques
Note
L'utilisateur Compte AWS et un utilisateur IAM peuvent demander des informations d'identification de sécurité temporaires pour les utilisateurs fédérés. Toutefois, par mesure de sécurité, seul un utilisateur IAM muni des autorisations nécessaires peut demander ces informations d'identification de sécurité temporaires, pour veiller à ce que l'utilisateur fédéré obtienne autant d'autorisations que l'utilisateur IAM. Dans certaines applications, vous choisirez peut-être de créer un utilisateur IAM avec des autorisations spécifiques, afin d'accorder uniquement des informations d'identification de sécurité temporaires à vos utilisateurs fédérés et vos applications.
- Java
-
Vous pouvez fournir des informations d'identification de sécurité temporaires à vos utilisateurs fédérés et à vos applications afin qu'ils puissent envoyer des demandes authentifiées pour accéder à vos AWS ressources. Lorsque vous demandez ces informations d'identification de sécurité temporaires, vous devez fournir un nom d'utilisateur et une stratégie IAM décrivant les autorisations de ressources que vous souhaitez accorder. Par défaut, la session dure une heure. Vous pouvez explicitement définir une valeur de durée différente lorsque vous demandez des informations d'identification de sécurité temporaires pour les utilisateurs fédérés et les applications.
Note
Lorsque vous demandez des informations d'identification de sécurité temporaires pour des utilisateurs fédérés et des applications, nous vous recommandons, pour plus de sécurité, d'utiliser un utilisateur IAM dédié disposant uniquement des autorisations d'accès nécessaires. L'utilisateur temporaire que vous créez ne peut pas obtenir plus d'autorisations que l'utilisateur IAM ayant demandé les informations d'identification de sécurité temporaires. Pour de plus amples informations, veuillez consulter Questions fréquentes (FAQ)AWS Identity and Access Management
. Pour fournir des informations d'identification de sécurité et envoyer une demande authentifiée pour accéder aux ressources, procédez comme suit :
-
Créez une instance de la classe
AWSSecurityTokenServiceClient
. -
Lancez une session en appelant la méthode
getFederationToken()
du client STS (Security Token Service). Fournissez des informations de session, y compris le nom d'utilisateur et une stratégie IAM, que vous souhaitez attacher aux informations d'identification temporaires. Vous pouvez renseigner une durée de session optionnelle. Cette méthode renvoie les informations d'identification de sécurité temporaires. -
Regroupez les informations d'identification de sécurité temporaires dans une instance de l'objet
BasicSessionCredentials
. Vous utilisez cet objet pour fournir les informations d'identification de sécurité temporaires à votre client Amazon S3. -
Créez une instance de la classe
AmazonS3Client
à l'aide des informations d'identification de sécurité temporaires. Vous envoyez des demandes à Amazon S3 grâce à ce client. Si vous envoyez des demandes à l'aide d'informations d'identification expirées, Amazon S3 renvoie une erreur.
L'exemple répertorie les clés dans le compartiment S3 spécifié. Dans l'exemple, vous obtenez des informations d'identification de sécurité temporaires pour une session de deux heures pour votre utilisateur fédéré et les utilisez pour envoyer des demandes authentifiées à Amazon S3. Pour exécuter cet exemple, vous devez créer un utilisateur IAM avec une politique attachée qui permet à l'utilisateur de demander des informations d'identification de sécurité temporaires et de répertorier vos AWS ressources. La stratégie suivante permet d'effectuer ceci :
{ "Statement":[{ "Action":["s3:ListBucket", "sts:GetFederationToken*" ], "Effect":"Allow", "Resource":"*" } ] }
Pour de plus amples informations sur la création d'un utilisateur IAM, veuillez consulter Création de votre premier groupe d'utilisateurs et d'administrateurs IAM dans le Guide de l'utilisateur IAM.
Après avoir créé un utilisateur IAM et attaché la stratégie précédente, vous pouvez exécuter l'exemple suivant. Pour obtenir des instructions sur la création et le test d'un échantillon de travail, voir Getting Started dans le guide du AWS SDK for Java développeur.
import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.AWSStaticCredentialsProvider; import com.amazonaws.auth.BasicSessionCredentials; import com.amazonaws.auth.policy.Policy; import com.amazonaws.auth.policy.Resource; import com.amazonaws.auth.policy.Statement; import com.amazonaws.auth.policy.Statement.Effect; import com.amazonaws.auth.policy.actions.S3Actions; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.ObjectListing; import com.amazonaws.services.securitytoken.AWSSecurityTokenService; import com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClientBuilder; import com.amazonaws.services.securitytoken.model.Credentials; import com.amazonaws.services.securitytoken.model.GetFederationTokenRequest; import com.amazonaws.services.securitytoken.model.GetFederationTokenResult; import java.io.IOException; public class MakingRequestsWithFederatedTempCredentials { public static void main(String[] args) throws IOException { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Specify bucket name ***"; String federatedUser = "*** Federated user name ***"; String resourceARN = "arn:aws:s3:::" + bucketName; try { AWSSecurityTokenService stsClient = AWSSecurityTokenServiceClientBuilder .standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(clientRegion) .build(); GetFederationTokenRequest getFederationTokenRequest = new GetFederationTokenRequest(); getFederationTokenRequest.setDurationSeconds(7200); getFederationTokenRequest.setName(federatedUser); // Define the policy and add it to the request. Policy policy = new Policy(); policy.withStatements(new Statement(Effect.Allow) .withActions(S3Actions.ListObjects) .withResources(new Resource(resourceARN))); getFederationTokenRequest.setPolicy(policy.toJson()); // Get the temporary security credentials. GetFederationTokenResult federationTokenResult = stsClient.getFederationToken(getFederationTokenRequest); Credentials sessionCredentials = federationTokenResult.getCredentials(); // Package the session credentials as a BasicSessionCredentials // object for an Amazon S3 client object to use. BasicSessionCredentials basicSessionCredentials = new BasicSessionCredentials( sessionCredentials.getAccessKeyId(), sessionCredentials.getSecretAccessKey(), sessionCredentials.getSessionToken()); AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new AWSStaticCredentialsProvider(basicSessionCredentials)) .withRegion(clientRegion) .build(); // To verify that the client works, send a listObjects request using // the temporary security credentials. ObjectListing objects = s3Client.listObjects(bucketName); System.out.println("No. of Objects = " + objects.getObjectSummaries().size()); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it, so it returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }
-
- .NET
-
Vous pouvez fournir des informations d'identification de sécurité temporaires à vos utilisateurs fédérés et à vos applications afin qu'ils puissent envoyer des demandes authentifiées pour accéder à vos AWS ressources. Lorsque vous demandez ces informations d'identification de sécurité temporaires, vous devez fournir un nom d'utilisateur et une stratégie IAM décrivant les autorisations de ressources que vous souhaitez accorder. Par défaut, la session dure une heure. Vous pouvez explicitement définir une valeur de durée différente lorsque vous demandez des informations d'identification de sécurité temporaires pour les utilisateurs fédérés et les applications. Pour obtenir des informations sur l'envoi de demandes authentifiées, consultez Demandes.
Note
Lorsque vous demandez des informations d'identification de sécurité temporaires pour des utilisateurs fédérés et des applications, nous vous suggérons, pour plus de sécurité, d'utiliser un utilisateur IAM dédié disposant uniquement des autorisations d'accès nécessaires. L'utilisateur temporaire que vous créez ne peut pas obtenir plus d'autorisations que l'utilisateur IAM ayant demandé les informations d'identification de sécurité temporaires. Pour de plus amples informations, veuillez consulter Questions fréquentes (FAQ)AWS Identity and Access Management
. Vous effectuez les actions suivantes :
-
Créez une instance du AWS Security Token Service client,
AmazonSecurityTokenServiceClient
classe. -
Lancez une session en invoquant la méthode
GetFederationToken
du client STS. Vous devez fournir des informations de session, y compris le nom d'utilisateur et une stratégie IAM, que vous souhaitez attacher aux informations d'identification temporaires. Vous pouvez également renseigner une durée de session. Cette méthode renvoie les informations d'identification de sécurité temporaires. -
Regroupez les informations d'identification de sécurité temporaires dans une instance de l'objet
SessionAWSCredentials
. Vous utilisez cet objet pour fournir les informations d'identification de sécurité temporaires à votre client Amazon S3. -
Créez une instance de la classe
AmazonS3Client
en fournissant les informations d'identification de sécurité temporaires. Vous utilisez ce client pour envoyer des demandes à Amazon S3. Si vous envoyez des demandes à l'aide d'informations d'identification expirées, Amazon S3 renvoie une erreur.
L'exemple C# suivant répertorie les clés dans le compartiment spécifié. Dans l'exemple, vous obtenez des informations d'identification de sécurité temporaires pour une session de deux heures pour votre utilisateur fédéré (Utilisateur 1), et les utilisez pour envoyer des demandes authentifiées à Amazon S3.
-
Pour cet exercice, vous créez un utilisateur IAM disposant d'autorisations minimales. À l'aide des informations d'identification de cet utilisateur IAM, vous demandez des informations d'identification temporaires pour d'autres utilisateurs. Cet exemple répertorie uniquement les objets contenus dans un compartiment spécifique. Créez un utilisateur IAM auquel est attachée la stratégie suivante :
{ "Statement":[{ "Action":["s3:ListBucket", "sts:GetFederationToken*" ], "Effect":"Allow", "Resource":"*" } ] }
La politique permet à l'utilisateur IAM de demander des informations d'identification de sécurité temporaires et une autorisation d'accès uniquement pour répertorier vos AWS ressources. Pour de plus amples informations sur la création d'un utilisateur IAM, veuillez consulter Création de votre groupe d'utilisateurs et d'administrateurs IAM dans le Guide de l'utilisateur IAM.
-
Utilisez les informations d'identification de sécurité des utilisateurs IAM pour tester l'exemple suivant. Cet exemple envoie une demande authentifiée à Amazon S3 à l'aide d'informations d'identification de sécurité temporaires. L'exemple indique la stratégie suivante lors de la demande des informations d'identification de sécurité temporaires pour l'utilisateur fédéré (User1), qui limite l'accès aux objets répertoriés dans un compartiment spécifique (
YourBucketName
). Vous devez mettre à jour la stratégie et fournir votre propre nom de compartiment existant.{ "Statement":[ { "Sid":"1", "Action":["s3:ListBucket"], "Effect":"Allow", "Resource":"arn:aws:s3:::YourBucketName" } ] }
-
Mettez à jour l'exemple suivant et fournissez le nom de compartiment que vous avez spécifié dans la stratégie d'accès d'utilisateur fédéré précédente. Pour plus d'informations sur la configuration et l'exécution des exemples de code, consultez Getting Started with the AWS SDK for .NET dans AWS le Guide du développeur du SDK pour .NET.
using Amazon; using Amazon.Runtime; using Amazon.S3; using Amazon.S3.Model; using Amazon.SecurityToken; using Amazon.SecurityToken.Model; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class TempFederatedCredentialsTest { private const string bucketName = "*** bucket name ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 client; public static void Main() { ListObjectsAsync().Wait(); } private static async Task ListObjectsAsync() { try { Console.WriteLine("Listing objects stored in a bucket"); // Credentials use the default AWS SDK for .NET credential search chain. // On local development machines, this is your default profile. SessionAWSCredentials tempCredentials = await GetTemporaryFederatedCredentialsAsync(); // Create a client by providing temporary security credentials. using (client = new AmazonS3Client(bucketRegion)) { ListObjectsRequest listObjectRequest = new ListObjectsRequest(); listObjectRequest.BucketName = bucketName; ListObjectsResponse response = await client.ListObjectsAsync(listObjectRequest); List<S3Object> objects = response.S3Objects; Console.WriteLine("Object count = {0}", objects.Count); Console.WriteLine("Press any key to continue..."); Console.ReadKey(); } } catch (AmazonS3Exception e) { Console.WriteLine("Error encountered ***. Message:'{0}' when writing an object", e.Message); } catch (Exception e) { Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message); } } private static async Task<SessionAWSCredentials> GetTemporaryFederatedCredentialsAsync() { AmazonSecurityTokenServiceConfig config = new AmazonSecurityTokenServiceConfig(); AmazonSecurityTokenServiceClient stsClient = new AmazonSecurityTokenServiceClient( config); GetFederationTokenRequest federationTokenRequest = new GetFederationTokenRequest(); federationTokenRequest.DurationSeconds = 7200; federationTokenRequest.Name = "User1"; federationTokenRequest.Policy = @"{ ""Statement"": [ { ""Sid"":""Stmt1311212314284"", ""Action"":[""s3:ListBucket""], ""Effect"":""Allow"", ""Resource"":""arn:aws:s3:::" + bucketName + @""" } ] } "; GetFederationTokenResponse federationTokenResponse = await stsClient.GetFederationTokenAsync(federationTokenRequest); Credentials credentials = federationTokenResponse.Credentials; SessionAWSCredentials sessionCredentials = new SessionAWSCredentials(credentials.AccessKeyId, credentials.SecretAccessKey, credentials.SessionToken); return sessionCredentials; } } }
-
- PHP
-
Cette rubrique explique comment utiliser les classes de la version 3 de AWS SDK for PHP pour demander des informations d'identification de sécurité temporaires pour les utilisateurs fédérés et les applications et les utiliser pour accéder aux ressources stockées dans Amazon S3. Pour plus d'informations sur l'API AWS SDK for Ruby, consultez AWS SDK for Ruby - Version 2.
Vous pouvez fournir des informations d'identification de sécurité temporaires à vos utilisateurs fédérés et à vos applications afin qu'ils puissent envoyer des demandes authentifiées pour accéder à vos AWS ressources. Lorsque vous demandez ces informations d'identification de sécurité temporaires, vous devez fournir un nom d'utilisateur et une stratégie IAM décrivant les autorisations de ressources que vous souhaitez accorder. Ces informations d'identification expirent à la fin de la session. Par défaut, la session dure une heure. Vous pouvez explicitement définir une valeur de durée différente lorsque vous demandez des informations d'identification de sécurité temporaires pour les utilisateurs fédérés et les applications. Pour en savoir plus sur les informations d'identification de sécurité temporaires, veuillez consulter Informations d'identification de sécurité temporaires dans le Guide de l'utilisateur IAM. Pour plus d'informations sur la transmission d'informations d'identification de sécurité temporaires à vos utilisateurs fédérés et aux applications, consultez Demandes.
Lorsque vous demandez des informations d'identification de sécurité temporaires pour des utilisateurs fédérés et des applications, nous vous recommandons, pour plus de sécurité, d'utiliser un utilisateur IAM dédié disposant uniquement des autorisations d'accès nécessaires. L'utilisateur temporaire que vous créez ne peut pas obtenir plus d'autorisations que l'utilisateur IAM ayant demandé les informations d'identification de sécurité temporaires. Pour de plus amples informations sur la fédération d'identité, veuillez consulter FAQ AWS Identity and Access Management
. Pour plus d'informations sur l'API AWS SDK for Ruby, consultez AWS SDK for Ruby - Version 2.
Exemple
L'exemple de PHP suivant répertorie les clés dans le compartiment spécifié. Dans l'exemple, vous obtenez des informations d'identification de sécurité temporaires pour une session d'une heure pour votre utilisateur fédéré (User1). Vous utilisez ensuite les informations d'identification de sécurité temporaires pour envoyer les demandes authentifiées à Amazon S3.
Pour plus de sécurité, lorsque vous demandez des informations d'identification de sécurité temporaires pour d'autres utilisateurs, vous utilisez les informations d'identification d'un utilisateur IAM disposant des autorisations pour demander des informations d'identification de sécurité temporaires. Pour veiller à ce que cet utilisateur IAM accorde uniquement à l'utilisateur fédéré les autorisations minimales propres aux applications, vous pouvez également limiter les autorisations d'accès de cet utilisateur IAM. Cet exemple répertorie uniquement les objets contenus dans un compartiment spécifique. Créez un utilisateur IAM auquel est attachée la stratégie suivante :
{ "Statement":[{ "Action":["s3:ListBucket", "sts:GetFederationToken*" ], "Effect":"Allow", "Resource":"*" } ] }
La politique permet à l'utilisateur IAM de demander des informations d'identification de sécurité temporaires et une autorisation d'accès uniquement pour répertorier vos AWS ressources. Pour de plus amples informations sur la création d'un utilisateur IAM, veuillez consulter Création de votre premier groupe d'utilisateurs et d'administrateurs IAM dans le Guide de l'utilisateur IAM.
Vous pouvez désormais utiliser les informations d'identification de sécurité des utilisateurs IAM pour tester l'exemple suivant. Cet exemple envoie une demande authentifiée à Amazon S3 à l'aide d'informations d'identification de sécurité temporaires. Lors d'une demande d'informations d'identification de sécurité temporaires pour l'utilisateur fédéré (User1), cet exemple spécifie la stratégie suivante, qui limite l'accès pour répertorier les objets contenus dans un compartiment spécifique. Mettez à jour la stratégie avec le nom de votre compartiment.
{ "Statement":[ { "Sid":"1", "Action":["s3:ListBucket"], "Effect":"Allow", "Resource":"arn:aws:s3:::
YourBucketName
" } ] }Dans l'exemple suivant, remplacez
YourBucketName
par le nom de votre compartiment lorsque vous spécifiez une ressource de stratégie.require 'vendor/autoload.php'; use Aws\S3\Exception\S3Exception; use Aws\S3\S3Client; use Aws\Sts\StsClient; $bucket = '*** Your Bucket Name ***'; // In real applications, the following code is part of your trusted code. It has // the security credentials that you use to obtain temporary security credentials. $sts = new StsClient([ 'version' => 'latest', 'region' => 'us-east-1' ]); // Fetch the federated credentials. $sessionToken = $sts->getFederationToken([ 'Name' => 'User1', 'DurationSeconds' => '3600', 'Policy' => json_encode([ 'Statement' => [ 'Sid' => 'randomstatementid' . time(), 'Action' => ['s3:ListBucket'], 'Effect' => 'Allow', 'Resource' => 'arn:aws:s3:::' . $bucket ] ]) ]); // The following will be part of your less trusted code. You provide temporary // security credentials so the code can send authenticated requests to Amazon S3. $s3 = new S3Client([ 'region' => 'us-east-1', 'version' => 'latest', 'credentials' => [ 'key' => $sessionToken['Credentials']['AccessKeyId'], 'secret' => $sessionToken['Credentials']['SecretAccessKey'], 'token' => $sessionToken['Credentials']['SessionToken'] ] ]); try { $result = $s3->listObjects([ 'Bucket' => $bucket ]); } catch (S3Exception $e) { echo $e->getMessage() . PHP_EOL; }
- Ruby
-
Vous pouvez fournir des informations d'identification de sécurité temporaires à vos utilisateurs fédérés et à vos applications afin qu'ils puissent envoyer des demandes authentifiées pour accéder à vos AWS ressources. Lorsque vous demandez des informations d'identification de sécurité temporaires auprès du service IAM, vous devez fournir un nom d'utilisateur et une stratégie IAM décrivant les autorisations de ressources que vous souhaitez accorder. Par défaut, la session dure une heure. Toutefois, si vous demandez des informations d'identification temporaires à l'aide des informations d'identification des utilisateurs IAM, vous pouvez explicitement définir une valeur de durée différente lorsque vous demandez les informations d'identification de sécurité temporaires pour des utilisateurs fédérés et des applications. Pour plus d'informations sur les informations d'identification de sécurité temporaires pour vos utilisateurs fédérés et applications, consultez Demandes.
Note
Lorsque vous demandez des informations d'identification de sécurité temporaires pour des utilisateurs fédérés et des applications, vous souhaiterez peut-être utiliser un utilisateur IAM dédié disposant uniquement des autorisations d'accès nécessaires. L'utilisateur temporaire que vous créez ne peut pas obtenir plus d'autorisations que l'utilisateur IAM ayant demandé les informations d'identification de sécurité temporaires. Pour de plus amples informations, veuillez consulter Questions fréquentes (FAQ)AWS Identity and Access Management
. Exemple
L'exemple de code Ruby suivant autorise un utilisateur fédéré disposant d'un ensemble limité d'autorisations à répertorier des clés dans le compartiment spécifié.
# Prerequisites: # - An existing Amazon S3 bucket. require "aws-sdk-s3" require "aws-sdk-iam" require "json" # Checks to see whether a user exists in IAM; otherwise, # creates the user. # # @param iam [Aws::IAM::Client] An initialized IAM client. # @param user_name [String] The user's name. # @return [Aws::IAM::Types::User] The existing or new user. # @example # iam = Aws::IAM::Client.new(region: 'us-west-2') # user = get_user(iam, 'my-user') # exit 1 unless user.user_name # puts "User's name: #{user.user_name}" def get_user(iam, user_name) puts "Checking for a user with the name '#{user_name}'..." response = iam.get_user(user_name: user_name) puts "A user with the name '#{user_name}' already exists." return response.user # If the user doesn't exist, create them. rescue Aws::IAM::Errors::NoSuchEntity puts "A user with the name '#{user_name}' doesn't exist. Creating this user..." response = iam.create_user(user_name: user_name) iam.wait_until(:user_exists, user_name: user_name) puts "Created user with the name '#{user_name}'." return response.user rescue StandardError => e puts "Error while accessing or creating the user named '#{user_name}': #{e.message}" end # Gets temporary AWS credentials for an IAM user with the specified permissions. # # @param sts [Aws::STS::Client] An initialized AWS STS client. # @param duration_seconds [Integer] The number of seconds for valid credentials. # @param user_name [String] The user's name. # @param policy [Hash] The access policy. # @return [Aws::STS::Types::Credentials] AWS credentials for API authentication. # @example # sts = Aws::STS::Client.new(region: 'us-west-2') # credentials = get_temporary_credentials(sts, duration_seconds, user_name, # { # 'Version' => '2012-10-17', # 'Statement' => [ # 'Sid' => 'Stmt1', # 'Effect' => 'Allow', # 'Action' => 's3:ListBucket', # 'Resource' => 'arn:aws:s3:::doc-example-bucket' # ] # } # ) # exit 1 unless credentials.access_key_id # puts "Access key ID: #{credentials.access_key_id}" def get_temporary_credentials(sts, duration_seconds, user_name, policy) response = sts.get_federation_token( duration_seconds: duration_seconds, name: user_name, policy: policy.to_json ) return response.credentials rescue StandardError => e puts "Error while getting federation token: #{e.message}" end # Lists the keys and ETags for the objects in an Amazon S3 bucket. # # @param s3_client [Aws::S3::Client] An initialized Amazon S3 client. # @param bucket_name [String] The bucket's name. # @return [Boolean] true if the objects were listed; otherwise, false. # @example # s3_client = Aws::S3::Client.new(region: 'us-west-2') # exit 1 unless list_objects_in_bucket?(s3_client, 'doc-example-bucket') def list_objects_in_bucket?(s3_client, bucket_name) puts "Accessing the contents of the bucket named '#{bucket_name}'..." response = s3_client.list_objects_v2( bucket: bucket_name, max_keys: 50 ) if response.count.positive? puts "Contents of the bucket named '#{bucket_name}' (first 50 objects):" puts "Name => ETag" response.contents.each do |obj| puts "#{obj.key} => #{obj.etag}" end else puts "No objects in the bucket named '#{bucket_name}'." end return true rescue StandardError => e puts "Error while accessing the bucket named '#{bucket_name}': #{e.message}" end # Example usage: def run_me region = "us-west-2" user_name = "my-user" bucket_name = "doc-example-bucket" iam = Aws::IAM::Client.new(region: region) user = get_user(iam, user_name) exit 1 unless user.user_name puts "User's name: #{user.user_name}" sts = Aws::STS::Client.new(region: region) credentials = get_temporary_credentials(sts, 3600, user_name, { "Version" => "2012-10-17", "Statement" => [ "Sid" => "Stmt1", "Effect" => "Allow", "Action" => "s3:ListBucket", "Resource" => "arn:aws:s3:::#{bucket_name}" ] } ) exit 1 unless credentials.access_key_id puts "Access key ID: #{credentials.access_key_id}" s3_client = Aws::S3::Client.new(region: region, credentials: credentials) exit 1 unless list_objects_in_bucket?(s3_client, bucket_name) end run_me if $PROGRAM_NAME == __FILE__