

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.

# Téléchargez et chargez des objets avec une signature préalable URLs
<a name="using-presigned-url"></a>

Vous pouvez utiliser Presigned URLs pour accorder un accès limité dans le temps aux objets dans Amazon S3 sans mettre à jour votre politique de compartiment. Une URL présignée peut être saisie dans un navigateur ou utilisée par un programme pour charger un objet. Les informations d'identification utilisées par l'URL présignée sont celles du principal Gestion des identités et des accès AWS (IAM) qui a généré l'URL.

Vous pouvez également utiliser Presigned URLs pour autoriser quelqu'un à télécharger un objet spécifique dans votre compartiment Amazon S3. Cela permet un téléchargement sans qu'une autre partie ne doive disposer d'informations d'identification ou d'autorisations de AWS sécurité. Si un objet avec la même clé que celle spécifiée dans l’URL présignée existe déjà dans le compartiment, Amazon S3 remplace l’objet existant par l’objet chargé.

Vous pouvez utiliser l’URL présignée plusieurs fois, jusqu’à la date et l’heure d’expiration.

Lorsque vous créez une URL présignée, vous devez fournir vos informations d’identification de sécurité, puis spécifier les éléments suivants : 
+ Un compartiment Amazon S3
+ Une clé d’objet (si le téléchargement de cet objet se fait dans votre compartiment Amazon S3, s’il s’agit du nom du fichier à charger)
+ Une méthode HTTP (`GET` pour le téléchargement des objets, `PUT` pour le chargement, `HEAD` pour la lecture des métadonnées des objets, etc.)
+ Un intervalle de temps d’expiration

Lorsque vous utilisez Presigned URLs pour télécharger des objets, vous pouvez vérifier l'intégrité des objets à l'aide de checksums. Alors que la version présignée URLs créée avec AWS Signature version 2 ne prend en charge que les MD5 sommes de contrôle, la version présignée URLs créée avec AWS Signature version 4 prend en charge des algorithmes de somme de contrôle supplémentairesCRC-64/NVME, notamment,,CRC32, CRC32C et. SHA-1 SHA-256 Pour utiliser ces algorithmes de somme de contrôle supplémentaires, assurez-vous d'utiliser la version 4 de AWS Signature et d'inclure l'en-tête de somme de contrôle approprié dans votre demande de téléchargement. Pour en savoir plus sur l’intégrité des objets, consultez [Vérification de l’intégrité des objets dans Amazon S3](checking-object-integrity.md).

**Topics**
+ [

## Utilisateurs habilités à créer une URL présignée
](#who-presigned-url)
+ [

## Date d'expiration du présigné URLs
](#PresignedUrl-Expiration)
+ [

## Limitation des capacités des URL présignées
](#PresignedUrlUploadObject-LimitCapabilities)
+ [

## Questions fréquemment posées pour Presigned URLs
](#PresignedUrlFAQ)
+ [

# Partage d'objets avec présigné URLs
](ShareObjectPreSignedURL.md)
+ [

# Chargement d'objets avec présignature URLs
](PresignedUrlUploadObject.md)

## Utilisateurs habilités à créer une URL présignée
<a name="who-presigned-url"></a>

Toute personne qui possède des autorisations de sécurité valides peut créer une URL présignée. Mais pour que l’utilisateur puisse accéder correctement à un objet, l’URL présignée doit être créée par une personne qui possède l’autorisation d’effectuer l’opération sur laquelle l’URL présignée est basée.

Les informations d’identification que vous pouvez utiliser pour créer une URL présignée sont les suivantes :
+ **Utilisateur IAM** — Valable jusqu'à 7 jours lorsque vous utilisez AWS Signature version 4.

  Afin de créer une URL présignée valide pendant 7 jours maximum, commencez par déléguer des informations d’identification d’utilisateur IAM (clé d’accès et clé secrète) à la méthode que vous utilisez pour créer l’URL présignée.
+ **Informations d’identification de sécurité temporaires** : elles ne peuvent pas être valides plus longtemps que les informations d’identification elles-mêmes. Ces informations d’identification incluent :
  + **Informations d’identification du rôle IAM** : l’URL présignée expire à l’expiration de la session de rôle, même si vous spécifiez un délai d’expiration plus long.
  + **Informations d’identification du rôle IAM utilisées par les instances Amazon EC2** : elles sont valides pendant la durée de validité des informations d’identification du rôle (généralement 6 heures).
  + **AWS Security Token Service informations d'identification** : valides uniquement pendant la durée des informations d'identification temporaires.

**Note**  
Si vous avez créé une URL présignée à l’aide d’informations d’identification temporaires, l’URL expire quand les informations d’identification expirent. En général, une URL présignée expire lorsque les informations d’identification que vous avez utilisées pour la créer sont révoquées, supprimées ou désactivées. Cela est vrai même si l’URL a été créée avec une date d’expiration ultérieure. Pour connaître la durée de vie des identifiants de sécurité temporaires, consultez la section [Comparaison des opérations AWS STS d'API](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#stsapi_comparison) dans le guide de l'*utilisateur IAM*.

## Date d'expiration du présigné URLs
<a name="PresignedUrl-Expiration"></a>

Une URL présignée reste valide pendant la période spécifiée lors de sa génération. Si vous créez une URL présignée à l’aide de la console Amazon S3, le délai d’expiration peut être défini entre 1 minute et 12 heures. Si vous utilisez le AWS CLI ou AWS SDKs, le délai d'expiration peut être fixé à 7 jours.

Si vous avez créé une URL présignée à l’aide d’un jeton temporaire, cette URL expirera quand le jeton expirera. En général, une URL présignée expire lorsque les informations d’identification que vous avez utilisées pour la créer sont révoquées, supprimées ou désactivées. Cela est vrai même si l’URL a été créée avec une date d’expiration ultérieure. Pour plus d’informations sur la manière dont les informations d’identification que vous utilisez affectent le délai d’expiration, consultez [Utilisateurs habilités à créer une URL présignée](#who-presigned-url).

Amazon S3 vérifie la date et l’heure d’expiration d’une URL signée au moment de la requête HTTP. Par exemple, si un client commence à télécharger un fichier volumineux immédiatement avant la date d’expiration, le téléchargement continue même si la date d’expiration intervient pendant le téléchargement. Cependant, si la connexion est perdue et que le client essaie de redémarrer le téléchargement une fois la date d’expiration passée, le téléchargement échoue.

## Limitation des capacités des URL présignées
<a name="PresignedUrlUploadObject-LimitCapabilities"></a>

Les capacités d’une URL présignée sont limitées par les autorisations de l’utilisateur qui l’a créée. Essentiellement, les jetons présignés URLs sont des jetons porteurs qui donnent accès à ceux qui les possèdent. À ce titre, nous vous recommandons de les protéger de manière appropriée. Voici quelques méthodes que vous pouvez utiliser pour restreindre l'utilisation de votre présigné URLs. 

**AWS Version 4 de la signature (SigV4)**  
Pour imposer un comportement spécifique lorsque les requêtes d’URL présignées sont authentifiées à l’aide d’ AWS Signature Version 4 (SigV4), vous pouvez utiliser les clés de condition dans les stratégies de compartiment et les stratégies de point d’accès. Par exemple, la stratégie de compartiment suivante utilise la condition `s3:signatureAge` pour refuser toute demande d’URL présignée Amazon S3 sur les objets du compartiment *amzn-s3-demo-bucket* si la signature date de plus de 10 minutes. Pour utiliser cet exemple, remplacez les *`user input placeholders`* par vos propres informations.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Deny a presigned URL request if the signature is more than 10 min old",
            "Effect": "Deny",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition": {
                "NumericGreaterThan": {
                    "s3:signatureAge": "600000"
                }
            }
        }
    ]
}
```

------

Pour plus d'informations sur les clés de politique relatives à AWS la version 4 de Signature, consultez [AWS la section Authentification de signature version 4](https://docs.aws.amazon.com/AmazonS3/latest/API/bucket-policy-s3-sigv4-conditions.html) dans le *manuel Amazon Simple Storage Service API Reference*.

**Restriction de chemin réseau**  
Si vous souhaitez restreindre l'utilisation des accès présignés URLs et de tous les accès Amazon S3 à des chemins réseau particuliers, vous pouvez écrire des politiques Gestion des identités et des accès AWS (IAM). Vous pouvez définir ces politiques sur le principal IAM qui effectue l’appel, le compartiment Simple Storage Service (Amazon S3) ou les deux. 

Une restriction de chemin réseau sur le principal IAM exige que l’utilisateur de ces informations d’identification effectue des requêtes à partir du réseau spécifié. Une restriction sur le compartiment ou le point d’accès nécessite que toutes les requêtes adressées à cette ressource proviennent du réseau spécifié. Ces restrictions s’appliquent également hors du scénario des URL présignées.

La clé de condition globale IAM que vous utilisez dépend du type de point de terminaison. Si vous utilisez le point de terminaison public pour Amazon S3, utilisez `aws:SourceIp`. Si vous utilisez un point de terminaison de cloud privé virtuel (VPC) pour Amazon S3, utilisez `aws:SourceVpc` ou `aws:SourceVpce`.

La déclaration de politique IAM suivante exige que le principal AWS n'accède qu'à partir de la plage réseau spécifiée. Avec cette déclaration de stratégie, tous les accès doivent provenir de cette plage. Cela inclut lorsqu’une personne utilise une URL présignée pour Amazon S3. Pour utiliser cet exemple, remplacez les *`user input placeholders`* par vos propres informations.

```
{
    "Sid": "NetworkRestrictionForIAMPrincipal",
    "Effect": "Deny",
    "Action": "*",
    "Resource": "*",
    "Condition": {
        "NotIpAddressIfExists": {"aws:SourceIp": "IP-address-range"},
        "BoolIfExists": {"aws:ViaAWSService": "false"}
    }
}
```

## Questions fréquemment posées pour Presigned URLs
<a name="PresignedUrlFAQ"></a>

**Q : Pourquoi mon présigné URLs expire-t-il avant la date d'expiration configurée ?**  
Les documents pré-signés URLs restent valides uniquement tant que leurs informations d'identification sous-jacentes sont valides. Une URL présignée expire soit à l’heure d’expiration configurée, soit à l’expiration des informations d’identification associées, selon la première éventualité. Pour les tâches ou les conteneurs Amazon Elastic Container Service, les informations d’identification des rôles changent généralement toutes les 1 à 6 heures. Lorsque vous utilisez AWS Security Token Service (AWS STS) AssumeRole, l'URL présignée expire à la fin de la session de rôle, qui est par défaut d'une heure. Pour les profils d’instance Amazon EC2, les informations d’identification des métadonnées changent périodiquement, avec une durée de validité maximale d’environ 6 heures.

**Q : pourquoi est-ce que le message d’erreur 403 Forbidden s’affiche quand j’accède à une URL présignée ?**  
Avant de générer une URL présignée, vérifiez que vous avez configuré les autorisations appropriées. L’utilisateur ou le rôle IAM qui génère l’URL doit disposer des autorisations requises, par exemple `s3:GetObject`, pour l’opération en question. Vérifiez également que la stratégie de compartiment Amazon S3 ne refuse pas explicitement l’accès à l’objet.

**Q : je reçois des erreurs `SignatureDoesNotMatch`. Comment puis-je résoudre le problème ?**  
Si vous rencontrez `SignatureDoesNotMatch` des erreurs lors de l'utilisation d'Amazon S3 presigned URLs, considérez plusieurs causes courantes. Tout d’abord, assurez-vous que l’horloge de votre système est synchronisée avec un serveur NTP (Network Time Protocol), car même de petits décalages temporels peuvent invalider les signatures. Sachez ensuite que certains proxys d’entreprise peuvent modifier les en-têtes ou les chaînes de requête, ce qui peut entraîner des incohérences de signature. Pour résoudre le problème, essayez sans le proxy. Enfin, vérifiez que tous les paramètres de la demande, y compris la méthode HTTP, les en-têtes et la chaîne de la requête, sont identiques entre la génération et l’utilisation de l’URL. La vérification de ces points permet souvent de résoudre les erreurs `SignatureDoesNotMatch`.

**Q : je reçois des erreurs `ExpiredToken`. Que dois-je faire ?**  
Lorsque vous recevez des `ExpiredToken` erreurs lors de l'utilisation de Presigned URLs, cela indique que les AWS informations d'identification utilisées pour générer l'URL ne sont plus valides. Pour résoudre ce problème, actualisez vos AWS informations d'identification avant de générer de nouvelles informations présignées URLs. Pour les applications de longue durée, nous recommandons d’implémenter une logique d’actualisation des informations d’identification afin de garantir un accès continu. Le cas échéant, vous pouvez utiliser des informations d’identification de plus longue durée ou mettre en œuvre des mécanismes d’actualisation des jetons. Si vous utilisez AWS Security Token Service (AWS STS) AssumeRole, vérifiez que la durée de session configurée répond aux exigences de votre cas d'utilisation. N'oubliez pas que les informations présignées URLs restent valides uniquement pendant la durée de validité de leurs informations d'identification sous-jacentes. Il est donc essentiel de mettre en œuvre une gestion appropriée des informations d'identification.

# Partage d'objets avec présigné URLs
<a name="ShareObjectPreSignedURL"></a>

Par défaut, tous les objets Amazon S3 sont privés, seul le propriétaire de l’objet a l’autorisation d’y accéder. Toutefois, le propriétaire de l’objet peut partager des objets avec d’autres personnes en créant une URL présignée. Une URL présignée utilise des informations d’identification de sécurité pour accorder une autorisation limitée dans le temps pour télécharger des objets. L’URL peut être saisie dans un navigateur ou utilisée par un programme pour télécharger l’objet. Les informations d'identification utilisées par l'URL présignée sont celles de l' AWS utilisateur qui a généré l'URL.

Pour des informations générales sur le présigné URLs, consultez[Téléchargez et chargez des objets avec une signature préalable URLs](using-presigned-url.md).

Vous pouvez créer une URL présignée pour partager un objet sans écrire de code à l'aide de la console Amazon S3, de l' AWS Explorateur pour Visual Studio (Windows) ou AWS Toolkit for Visual Studio Code. Vous pouvez également générer une URL présignée par programmation en utilisant le AWS Command Line Interface (AWS CLI) ou le. AWS SDKs

## Utilisation de la console S3
<a name="generating-presigned-url"></a>

 Vous pouvez utiliser la console Amazon S3 pour générer une URL présignée pour partager un objet jusqu'à 5 To en suivant ces étapes. Dans la console, le délai d’expiration maximal d’une URL présignée est de 12 heures à compter de la création.

**Pour générer une URL présignée à l'aide de la console Amazon S3**

1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Dans le volet de navigation de gauche, choisissez **Compartiments à usage général**.

1. Dans la liste **Compartiments à usage général**, choisissez le nom du compartiment qui contient l’objet pour lequel vous souhaitez une URL présignée.

1. Dans la liste **Objects** (Objets), sélectionnez l’objet pour lequel vous souhaitez créer une URL présignée.

1. Dans le menu **Actions d’objet**, choisissez **Partager avec une URL présignée**.

1. Spécifiez la durée de validité souhaitée pour l’URL présignée.

1. Choisissez **Create presigned URL** (Créer une URL présignée).

1. Lorsqu’une confirmation apparaît, l’URL est automatiquement copiée dans votre presse-papier. Un bouton s'affiche pour copier l'URL présignée, si vous devez la copier à nouveau.

## À l'aide du AWS CLI
<a name="ShareObjectPresignedCLI"></a>

L'exemple de AWS CLI commande suivant génère une URL présignée pour partager un objet depuis un compartiment Amazon S3. Lorsque vous utilisez le AWS CLI, le délai d'expiration maximal d'une URL présignée est de 7 jours à compter de sa création. Pour utiliser cet exemple, remplacez les *`user input placeholders`* par vos propres informations.

```
aws s3 presign s3://amzn-s3-demo-bucket/mydoc.txt --expires-in 604800
```

Le paramètre `--expires-in` indique le délai d’expiration en secondes.



**Note**  
Pour tous Régions AWS ceux lancés après le 20 mars 2019, vous devez spécifier le `endpoint-url` et `Région AWS` avec la demande. Pour voir la liste complète des régions et points de terminaison Amazon S3, consultez [Régions et points de terminaison](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) dans la *Référence générale AWS *.

```
aws s3 presign s3://amzn-s3-demo-bucket/mydoc.txt --expires-in 604800 --region af-south-1 --endpoint-url https://s3.af-south-1.amazonaws.com
```



Pour plus d’informations, consultez [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/presign.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/presign.html) dans la *Référence des commandes de l’AWS CLI *.

## En utilisant le AWS SDKs
<a name="ShareObjectPreSignedURLSDK"></a>

Vous pouvez générer une URL présignée par programmation à l'aide du. AWS SDKs

------
#### [ Python ]

 Le script Python suivant génère une URL `GET` présignée pour le partage d’un objet.

1. Copiez le contenu du script et enregistrez-le sous forme de fichier « *get-only-url.py* ». Pour utiliser les exemples suivants, remplacez le *user input placeholders* par vos propres informations (telles que le nom de votre fichier). 

   ```
   import argparse
   import boto3
   from botocore.exceptions import ClientError
   
   def generate_presigned_url(s3_client, client_method, method_parameters, expires_in):
       """
       Generate a presigned Amazon S3 URL that can be used to perform an action.
       
       :param s3_client: A Boto3 Amazon S3 client.
       :param client_method: The name of the client method that the URL performs.
       :param method_parameters: The parameters of the specified client method.
       :param expires_in: The number of seconds the presigned URL is valid for.
       :return: The presigned URL.
       """
       try:
           url = s3_client.generate_presigned_url(
               ClientMethod=client_method,
               Params=method_parameters,
               ExpiresIn=expires_in
           )
       except ClientError:
           print(f"Couldn't get a presigned URL for client method '{client_method}'.")
           raise
       return url
   
   def main():
       parser = argparse.ArgumentParser()
       parser.add_argument("bucket", help="The name of the bucket.")
       parser.add_argument(
           "key", help="The key (path and filename) in the S3 bucket.",
       )
       args = parser.parse_args()
       
       # By default, this will use credentials from ~/.aws/credentials
       s3_client = boto3.client("s3")
       
       # The presigned URL is specified to expire in 1000 seconds
       url = generate_presigned_url(
           s3_client, 
           "get_object", 
           {"Bucket": args.bucket, "Key": args.key}, 
           1000
       )
       print(f"Generated GET presigned URL: {url}")
   
   if __name__ == "__main__":
       main()
   ```

1. Pour générer une URL `GET` présignée pour le partage d’un fichier, exécutez le script suivant avec le nom de votre compartiment et le chemin d’objet souhaité. 

    La commande suivante utilise des valeurs d’exemple. Remplacez les *user input placeholders* par vos propres informations.

   ```
   python get-only-url.py amzn-s3-demo-bucket <object-path>
   ```

   Le script affiche une URL `GET` présignée :

   ```
   Generated GET presigned URL: https://amzn-s3-demo-bucket.s3.amazonaws.com/object.txt?AWS AccessKeyId=AKIAIOSFODNN7EXAMPLE&Signature=vjbyNxybdZaMmLa%2ByT372YEAiv4%3D&Expires=1741978496
   ```

1. Vous pouvez télécharger le fichier en utilisant l’URL présignée générée avec curl :

   ```
   curl -X GET "generated-presigned-url" -o "path/to/save/file" 
   ```

Pour d'autres exemples d'utilisation du AWS SDKs pour générer une URL présignée pour partager un objet, consultez [Créer une URL présignée pour Amazon S3 à l'aide d'un AWS SDK](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_Scenario_PresignedUrl_section.html). 

**Note**  
Pour tous Régions AWS ceux lancés après le 20 mars 2019, vous devez spécifier le `endpoint-url` et `Région AWS` avec la demande. Pour voir la liste complète des régions et points de terminaison Amazon S3, consultez [Régions et points de terminaison](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) dans la *Référence générale AWS *.

**Note**  
Lorsque vous utilisez le AWS SDKs, l'attribut Tagging doit être un en-tête et non un paramètre de requête. Tous les autres attributs peuvent être transmis en tant que paramètre pour l’URL présignée. 

------

## À l'aide du AWS Toolkit for Visual Studio (Windows)
<a name="ShareObjectPreSignedURLVSExplorer"></a>

**Note**  
À l'heure actuelle, Visual Studio pour Mac AWS Toolkit for Visual Studio n'est pas compatible.

1. Installez le AWS Toolkit for Visual Studio en suivant les instructions ci-dessous, [Installation et configuration du Toolkit for Visual Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/setup.html) dans le *guide de AWS Toolkit for Visual Studio l'utilisateur*.

1. Connectez-vous à AWS en suivant les étapes ci-dessous, section [Connexion à AWS](https://docs.aws.amazon.com/AWSToolkitVS/latest/UserGuide/connect.html) dans le *guide de AWS Toolkit for Visual Studio l'utilisateur*.

1. Dans le volet latéral gauche intitulé **Explorateur AWS **, double-cliquez sur le compartiment contenant votre objet.

1. Cliquez avec le bouton droit sur l’objet pour lequel vous souhaitez générer une URL présignée, puis sélectionnez **Créer une URL présignée**.

1. Dans la fenêtre contextuelle, définissez la date et l’heure d’expiration de votre URL présignée.

1. La **clé d’objet** devrait être préremplie en fonction de l’objet que vous avez sélectionné.

1. Choisissez **GET** pour spécifier que cette URL présignée est utilisée pour télécharger un objet.

1. Cliquez sur le bouton **Générer**.

1. Pour copier l’URL dans le presse-papiers, choisissez **Copier**.

1. Pour utiliser l’URL présignée générée, collez l’URL dans n’importe quel navigateur.

## En utilisant AWS Toolkit for Visual Studio Code
<a name="ShareObjectPreSignedURLVSCode"></a>

Si vous utilisez Visual Studio Code, vous pouvez générer une URL présignée pour partager un objet sans écrire de code grâce à AWS Toolkit for Visual Studio Code. Pour des informations générales, consultez [AWS Toolkit for Visual Studio Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/welcome.html) dans le *Guide de l’utilisateur AWS Toolkit for Visual Studio Code *. 

Pour obtenir des instructions sur l'installation du AWS Toolkit for Visual Studio Code, reportez-vous à la section [Installation du AWS Toolkit for Visual Studio Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/setup-toolkit.html) dans le *guide de AWS Toolkit for Visual Studio Code l'utilisateur*.

1. Connectez-vous à AWS en suivant les étapes ci-dessous, section [Connexion à AWS Toolkit for Visual Studio Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/connect.html) dans le *guide de AWS Toolkit for Visual Studio Code l'utilisateur*.

1. Sélectionnez le AWS logo sur le panneau de gauche dans Visual Studio Code.

1. Sous **EXPLORER**, sélectionnez **S3**.

1. Choisissez un compartiment et un fichier, puis ouvrez le menu contextuel (clic droit).

1. Choisissez **Générer une URL présignée**, puis définissez le délai d’expiration (en minutes).

1. Appuyez sur Entrée et l’URL présignée est copiée dans votre presse-papiers.

# Chargement d'objets avec présignature URLs
<a name="PresignedUrlUploadObject"></a>



Vous pouvez utiliser Presigned URLs pour autoriser quelqu'un à charger un objet dans votre compartiment Amazon S3. L'utilisation d'une URL présignée permettra un téléchargement sans qu'une autre partie n'ait besoin d'informations d'identification ou d'autorisations AWS de sécurité. Une URL présignée est limitée par les autorisations de l’utilisateur qui l’a créée. Cela signifie que si vous recevez une URL présignée pour charger un objet, vous pouvez le charger uniquement si le créateur de l’URL dispose des autorisations nécessaires pour charger cet objet.

Lorsqu’une personne utilise l’URL pour charger un objet, Amazon S3 crée l’objet dans le compartiment spécifié. Si un objet avec la même clé que celle spécifiée dans l’URL présignée existe déjà dans le compartiment, Simple Storage Service (Amazon S3) remplace l’objet existant par l’objet chargé. Après le chargement, le propriétaire du compartiment devient propriétaire de l’objet.

Pour des informations générales sur le présigné URLs, consultez[Téléchargez et chargez des objets avec une signature préalable URLs](using-presigned-url.md).

Vous pouvez créer une URL présignée pour le chargement d’un objet sans écrire de code grâce à AWS Explorer for Visual Studio. Vous pouvez également générer une URL présignée par programmation à l'aide du. AWS SDKs

**Note**  
À l'heure actuelle, Visual Studio pour Mac AWS Toolkit for Visual Studio n'est pas compatible.

## À l'aide du AWS Toolkit for Visual Studio (Windows)
<a name="upload-object-presignedurl-vsexplorer"></a>

1. Installez le AWS Toolkit for Visual Studio en suivant les instructions ci-dessous, [Installation et configuration du Toolkit for Visual Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/setup.html) dans le *guide de AWS Toolkit for Visual Studio l'utilisateur*.

1. Connectez-vous à AWS en suivant les étapes ci-dessous, section [Connexion à AWS](https://docs.aws.amazon.com/AWSToolkitVS/latest/UserGuide/connect.html) dans le *guide de AWS Toolkit for Visual Studio l'utilisateur*.

1. Dans le volet de gauche intitulé **Explorateur AWS **, cliquez avec le bouton droit sur le compartiment dans lequel vous souhaitez charger un objet.

1. Choisissez **Créer une URL présignée**.

1. Dans la fenêtre contextuelle, définissez la date et l’heure d’expiration de votre URL présignée.

1. Pour **Clé d’objet**, définissez le nom du fichier à charger. Le fichier que vous chargez doit correspondre exactement à ce nom. Si un objet avec la même clé que celle spécifiée dans l’URL présignée existe déjà dans le compartiment, Amazon S3 remplace l’objet existant par l’objet chargé. 

1. Choisissez **PUT** pour spécifier que cette URL présignée est utilisée pour charger un objet.

1. Cliquez sur le bouton **Générer**.

1. Pour copier l’URL dans le presse-papiers, choisissez **Copier**.

1. Pour utiliser cette URL, vous pouvez envoyer une demande PUT avec la commande `curl`. Incluez le chemin complet de votre fichier et l’URL présignée elle-même. 

   ```
   curl -X PUT -T "/path/to/file" "presigned URL"
   ```

## Utilisation du AWS SDKs pour générer une URL `PUT` présignée pour le téléchargement d'un fichier
<a name="presigned-urls-upload-sdk"></a>

 Vous pouvez générer une URL présignée qui peut exécuter une action S3 pendant une durée limitée. 

**Note**  
Si vous utilisez la AWS CLI ou AWS SDKs, le délai d'expiration du présigné URLs peut être fixé à 7 jours. Pour plus d'informations, consultez la section [Délai d'expiration des documents présignés URLs](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-presigned-url.html#PresignedUrl-Expiration).

------
#### [ Python ]

 Le script Python suivant génère une URL `PUT` présignée pour le chargement d’un objet dans un compartiment S3 à usage général. 

1. Copiez le contenu du script et enregistrez-le sous forme de fichier « *put-only-url.py* ». Pour utiliser les exemples suivants, remplacez le *user input placeholders* par vos propres informations (telles que le nom de votre fichier). 

   ```
   import argparse
   import boto3
   from botocore.exceptions import ClientError
   
   def generate_presigned_url(s3_client, client_method, method_parameters, expires_in):
       """
       Generate a presigned Amazon S3 URL that can be used to perform an action.
       
       :param s3_client: A Boto3 Amazon S3 client.
       :param client_method: The name of the client method that the URL performs.
       :param method_parameters: The parameters of the specified client method.
       :param expires_in: The number of seconds the presigned URL is valid for.
       :return: The presigned URL.
       """
       try:
           url = s3_client.generate_presigned_url(
               ClientMethod=client_method,
               Params=method_parameters,
               ExpiresIn=expires_in
           )
       except ClientError:
           print(f"Couldn't get a presigned URL for client method '{client_method}'.")
           raise
       return url
   
   def main():
       parser = argparse.ArgumentParser()
       parser.add_argument("bucket", help="The name of the bucket.")
       parser.add_argument(
           "key", help="The key (path and filename) in the S3 bucket.",
       )
       parser.add_argument(
           "--region", help="The AWS region where the bucket is located.", default="us-east-1"
       )
       parser.add_argument(
           "--content-type", help="The content type of the file to upload.", default="application/octet-stream"
       )
       args = parser.parse_args()
       
       # Create S3 client with explicit region configuration
       s3_client = boto3.client("s3", region_name=args.region)
       
       # Optionally set signature version if needed for older S3 regions
       # s3_client.meta.config.signature_version = 's3v4'
       
       # The presigned URL is specified to expire in 1000 seconds
       url = generate_presigned_url(
           s3_client, 
           "put_object", 
           {
               "Bucket": args.bucket, 
               "Key": args.key,
               "ContentType": args.content_type  # Specify content type
           }, 
           1000
       )
       print(f"Generated PUT presigned URL: {url}")
   
   if __name__ == "__main__":
       main()
   ```

1. Pour générer une URL `PUT` présignée pour le chargement d’un fichier, exécutez le script suivant avec le nom de votre compartiment et le chemin d’objet souhaité. 

    La commande suivante utilise des valeurs d’exemple. Remplacez les *user input placeholders* par vos propres informations.

   ```
   python put-only-url.py amzn-s3-demo-bucket <object-path> --region us-east-1 --content-type application/octet-stream
   ```

   Le script affiche une URL `PUT` présignée :

   ```
   Generated PUT presigned URL: https://amzn-s3-demo-bucket.s3.amazonaws.com/object.txt?AWS AccessKeyId=AKIAIOSFODNN7EXAMPLE&Signature=vjbyNxybdZaMmLa%2ByT372YEAiv4%3D&Expires=1741978496
   ```

1. Vous pouvez désormais charger le fichier en utilisant l’URL présignée générée avec curl. Assurez-vous d’inclure le même type de contenu que celui utilisé lors de la génération de l’URL :

   ```
   curl -X PUT -T "path/to/your/local/file" -H "Content-Type: application/octet-stream" "generated-presigned-url"
   ```

   Si vous avez spécifié un autre type de contenu lors de la génération de l’URL, veillez à utiliser le même type de contenu dans la commande curl.

Pour d'autres exemples d'utilisation du AWS SDKs pour générer une URL présignée pour le téléchargement d'un objet, consultez [Créer une URL présignée pour Amazon S3 à l'aide d'un SDK](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_Scenario_PresignedUrl_section.html). AWS 

**Résolution des SignatureDoesNotMatch erreurs**  
Si vous rencontrez une `SignatureDoesNotMatch` erreur lors de l'utilisation de Presigned URLs, vérifiez les points suivants :  
Vérifiez que l’heure de votre système est synchronisée avec un serveur de temps fiable
Assurez-vous d’utiliser l’URL exactement telle qu’elle a été générée, sans aucune modification
Vérifiez si l’URL a expiré et générez-en une nouvelle si nécessaire
Assurez-vous que le type de contenu de votre demande de chargement correspond au type de contenu spécifié lors de la génération de l’URL
Vérifiez que vous utilisez la bonne région pour le compartiment
Lorsque vous utilisez curl, placez l’URL entre guillemets pour gérer correctement les caractères spéciaux

------