

La AWS SDK pour JavaScript v2 est arrivée end-of-support. Nous vous recommandons de migrer vers la [AWS SDK pour JavaScript version 3](https://docs.aws.amazon.com//sdk-for-javascript/v3/developer-guide/). Pour plus de détails et d'informations sur la façon de migrer, veuillez consulter cette [annonce](https://aws.amazon.com/blogs//developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/).

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.

# Utilisation de stratégies de compartiment Amazon S3
<a name="s3-example-bucket-policies"></a>

![\[JavaScript code example that applies to Node.js execution\]](http://docs.aws.amazon.com/fr_fr/sdk-for-javascript/v2/developer-guide/images/nodeicon.png)

**Cet exemple de code Node.js présente :**
+ Comment récupérer la politique de compartiment d'un compartiment Amazon S3.
+ Comment ajouter ou mettre à jour la politique de compartiment d'un compartiment Amazon S3.
+ Comment supprimer la politique de compartiment d'un compartiment Amazon S3.

## Scénario
<a name="w2aac20c25c27c15b9"></a>

Dans cet exemple, une série de modules Node.js sont utilisés pour récupérer, définir ou supprimer une politique de compartiment sur un compartiment Amazon S3. Les modules Node.js utilisent le SDK JavaScript pour configurer la politique d'un compartiment Amazon S3 sélectionné à l'aide des méthodes suivantes de la classe client Amazon S3 :
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getBucketPolicy-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getBucketPolicy-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#putBucketPolicy-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#putBucketPolicy-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#deleteBucketPolicy-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#deleteBucketPolicy-property)

Pour plus d'informations sur les politiques de compartiment pour les compartiments Amazon S3, consultez la section [Utilisation des politiques de compartiment et des politiques utilisateur](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-iam-policies.html) dans le *guide de l'utilisateur d'Amazon Simple Storage Service*.

## Tâches prérequises
<a name="w2aac20c25c27c15c11"></a>

Pour configurer et exécuter cet exemple, vous devez d'abord :
+ Installez Node.js. Pour plus d'informations sur l'installation de Node.js, consultez le [site web de Node.js](https://nodejs.org).
+ Créez un fichier de configurations partagé avec vos informations d'identification utilisateur. Pour plus d'informations sur le fichier d'informations d'identification partagé, consultez [Chargement des informations d'identification dans Node.js à partir du fichier d'informations d'identification partagé](loading-node-credentials-shared.md).

## Configuration du kit SDK
<a name="s3-example-bucket-policies-configure-sdk"></a>

Configurez le SDK pour JavaScript en créant un objet de configuration global, puis en définissant la région pour votre code. Dans cet exemple, la région est `us-west-2`.

```
// Load the SDK for JavaScript
var AWS = require('aws-sdk');
// Set the Region 
AWS.config.update({region: 'us-west-2'});
```

## Extraction de la stratégie de compartiment actuelle
<a name="s3-example-bucket-policies-get-policy"></a>

Créez un module Node.js nommé `s3_getbucketpolicy.js`. Le module prend un seul argument de ligne de commande pour spécifier le compartiment de la stratégie que vous souhaitez. Veillez à configurer le kit SDK comme indiqué précédemment. 

Créez un objet de service `AWS.S3`. Le seul paramètre à passer est le nom du compartiment sélectionné lorsque vous appelez la méthode `getBucketPolicy`. Si le compartiment possède actuellement une politique, cette politique est renvoyée par Amazon S3 dans le `data` paramètre transmis à la fonction de rappel.

Si le compartiment sélectionné ne dispose pas de stratégie, ces informations sont retournées à la fonction de rappel dans le paramètre `error`.

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });

// Create S3 service object
s3 = new AWS.S3({ apiVersion: "2006-03-01" });

var bucketParams = { Bucket: process.argv[2] };
// call S3 to retrieve policy for selected bucket
s3.getBucketPolicy(bucketParams, function (err, data) {
  if (err) {
    console.log("Error", err);
  } else if (data) {
    console.log("Success", data.Policy);
  }
});
```

Pour exécuter l'exemple, entrez ce qui suit dans la ligne de commande.

```
node s3_getbucketpolicy.js BUCKET_NAME
```

Cet exemple de code se trouve [ici sur GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javascript/example_code/s3/s3_getbucketpolicy.js).

## Définition d'une stratégie de compartiment simple
<a name="s3-example-bucket-policies-set-policy"></a>

Créez un module Node.js nommé `s3_setbucketpolicy.js`. Le module prend un seul argument de ligne de commande pour spécifier le compartiment de la stratégie que vous souhaitez appliquer. Configurez le kit SDK comme illustré précédemment. 

Créez un objet de service `AWS.S3`. Les stratégies de compartiment sont spécifiées au format JSON. Tout d'abord, créez un objet JSON contenant toutes les valeurs pour spécifier la stratégie à l'exception de la valeur `Resource` qui identifie le compartiment.

Formatez la chaîne `Resource` requise par la stratégie, en intégrant le nom du compartiment sélectionné. Insérez cette chaîne dans l'objet JSON. Préparez les paramètres pour la méthode `putBucketPolicy`, y compris le nom du compartiment et la stratégie JSON convertie en une valeur de chaîne.

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });

// Create S3 service object
s3 = new AWS.S3({ apiVersion: "2006-03-01" });

var readOnlyAnonUserPolicy = {
  Version: "2012-10-17",
  Statement: [
    {
      Sid: "AddPerm",
      Effect: "Allow",
      Principal: "*",
      Action: ["s3:GetObject"],
      Resource: [""],
    },
  ],
};

// create selected bucket resource string for bucket policy
var bucketResource = "arn:aws:s3:::" + process.argv[2] + "/*";
readOnlyAnonUserPolicy.Statement[0].Resource[0] = bucketResource;

// convert policy JSON into string and assign into params
var bucketPolicyParams = {
  Bucket: process.argv[2],
  Policy: JSON.stringify(readOnlyAnonUserPolicy),
};

// set the new policy on the selected bucket
s3.putBucketPolicy(bucketPolicyParams, function (err, data) {
  if (err) {
    // display error message
    console.log("Error", err);
  } else {
    console.log("Success", data);
  }
});
```

Pour exécuter l'exemple, entrez ce qui suit dans la ligne de commande.

```
node s3_setbucketpolicy.js BUCKET_NAME
```

Cet exemple de code se trouve [ici sur GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javascript/example_code/s3/s3_setbucketpolicy.js).

## Suppression d'une stratégie de compartiment
<a name="s3-example-bucket-policies-delete-policy"></a>

Créez un module Node.js nommé `s3_deletebucketpolicy.js`. Le module prend un seul argument de ligne de commande pour spécifier le compartiment de la stratégie que vous souhaitez supprimer. Configurez le kit SDK comme illustré précédemment.

 Créez un objet de service `AWS.S3`. Le seul paramètre à passer lorsque vous appelez la méthode `deleteBucketPolicy` est le nom du compartiment sélectionné.

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });

// Create S3 service object
s3 = new AWS.S3({ apiVersion: "2006-03-01" });

var bucketParams = { Bucket: process.argv[2] };
// call S3 to delete policy for selected bucket
s3.deleteBucketPolicy(bucketParams, function (err, data) {
  if (err) {
    console.log("Error", err);
  } else if (data) {
    console.log("Success", data);
  }
});
```

Pour exécuter l'exemple, entrez ce qui suit dans la ligne de commande.

```
node s3_deletebucketpolicy.js BUCKET_NAME
```

Cet exemple de code se trouve [ici sur GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javascript/example_code/s3/s3_deletebucketpolicy.js).