UNPKG

@aws-sdk/client-s3

Version:

AWS SDK for JavaScript S3 Client for Node.js, Browser and React Native

254 lines (253 loc) 9.57 kB
import { Command as $Command } from "@smithy/smithy-client"; import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; import type { PutBucketWebsiteRequest } from "../models/models_0"; import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; /** * @public */ export type { __MetadataBearer }; export { $Command }; /** * @public * * The input for {@link PutBucketWebsiteCommand}. */ export interface PutBucketWebsiteCommandInput extends PutBucketWebsiteRequest { } /** * @public * * The output of {@link PutBucketWebsiteCommand}. */ export interface PutBucketWebsiteCommandOutput extends __MetadataBearer { } declare const PutBucketWebsiteCommand_base: { new (input: PutBucketWebsiteCommandInput): import("@smithy/smithy-client").CommandImpl<PutBucketWebsiteCommandInput, PutBucketWebsiteCommandOutput, S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes>; new (input: PutBucketWebsiteCommandInput): import("@smithy/smithy-client").CommandImpl<PutBucketWebsiteCommandInput, PutBucketWebsiteCommandOutput, S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes>; getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; }; /** * <note> * <p>This operation is not supported for directory buckets.</p> * </note> * <p>Sets the configuration of the website that is specified in the <code>website</code> subresource. To * configure a bucket as a website, you can add this subresource on the bucket with website configuration * information such as the file name of the index document and any redirect rules. For more information, * see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html">Hosting Websites on * Amazon S3</a>.</p> * <p>This PUT action requires the <code>S3:PutBucketWebsite</code> permission. By default, only the * bucket owner can configure the website attached to a bucket; however, bucket owners can allow other * users to set the website configuration by writing a bucket policy that grants them the * <code>S3:PutBucketWebsite</code> permission.</p> * <p>To redirect all website requests sent to the bucket's website endpoint, you add a website * configuration with the following elements. Because all requests are sent to another website, you don't * need to provide index document name for the bucket.</p> * <ul> * <li> * <p> * <code>WebsiteConfiguration</code> * </p> * </li> * <li> * <p> * <code>RedirectAllRequestsTo</code> * </p> * </li> * <li> * <p> * <code>HostName</code> * </p> * </li> * <li> * <p> * <code>Protocol</code> * </p> * </li> * </ul> * <p>If you want granular control over redirects, you can use the following elements to add routing rules * that describe conditions for redirecting requests and information about the redirect destination. In * this case, the website configuration must provide an index document for the bucket, because some * requests might not be redirected. </p> * <ul> * <li> * <p> * <code>WebsiteConfiguration</code> * </p> * </li> * <li> * <p> * <code>IndexDocument</code> * </p> * </li> * <li> * <p> * <code>Suffix</code> * </p> * </li> * <li> * <p> * <code>ErrorDocument</code> * </p> * </li> * <li> * <p> * <code>Key</code> * </p> * </li> * <li> * <p> * <code>RoutingRules</code> * </p> * </li> * <li> * <p> * <code>RoutingRule</code> * </p> * </li> * <li> * <p> * <code>Condition</code> * </p> * </li> * <li> * <p> * <code>HttpErrorCodeReturnedEquals</code> * </p> * </li> * <li> * <p> * <code>KeyPrefixEquals</code> * </p> * </li> * <li> * <p> * <code>Redirect</code> * </p> * </li> * <li> * <p> * <code>Protocol</code> * </p> * </li> * <li> * <p> * <code>HostName</code> * </p> * </li> * <li> * <p> * <code>ReplaceKeyPrefixWith</code> * </p> * </li> * <li> * <p> * <code>ReplaceKeyWith</code> * </p> * </li> * <li> * <p> * <code>HttpRedirectCode</code> * </p> * </li> * </ul> * <p>Amazon S3 has a limitation of 50 routing rules per website configuration. If you require more than 50 * routing rules, you can use object redirect. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html">Configuring an Object Redirect</a> in the * <i>Amazon S3 User Guide</i>.</p> * <p>The maximum request length is limited to 128 KB.</p> * <important> * <p>You must URL encode any signed header values that contain spaces. For example, if your header value is <code>my file.txt</code>, containing two spaces after <code>my</code>, you must URL encode this value to <code>my%20%20file.txt</code>.</p> * </important> * @example * Use a bare-bones client and the command you need to make an API call. * ```javascript * import { S3Client, PutBucketWebsiteCommand } from "@aws-sdk/client-s3"; // ES Modules import * // const { S3Client, PutBucketWebsiteCommand } = require("@aws-sdk/client-s3"); // CommonJS import * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; * const config = {}; // type is S3ClientConfig * const client = new S3Client(config); * const input = { // PutBucketWebsiteRequest * Bucket: "STRING_VALUE", // required * ContentMD5: "STRING_VALUE", * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", * WebsiteConfiguration: { // WebsiteConfiguration * ErrorDocument: { // ErrorDocument * Key: "STRING_VALUE", // required * }, * IndexDocument: { // IndexDocument * Suffix: "STRING_VALUE", // required * }, * RedirectAllRequestsTo: { // RedirectAllRequestsTo * HostName: "STRING_VALUE", // required * Protocol: "http" || "https", * }, * RoutingRules: [ // RoutingRules * { // RoutingRule * Condition: { // Condition * HttpErrorCodeReturnedEquals: "STRING_VALUE", * KeyPrefixEquals: "STRING_VALUE", * }, * Redirect: { // Redirect * HostName: "STRING_VALUE", * HttpRedirectCode: "STRING_VALUE", * Protocol: "http" || "https", * ReplaceKeyPrefixWith: "STRING_VALUE", * ReplaceKeyWith: "STRING_VALUE", * }, * }, * ], * }, * ExpectedBucketOwner: "STRING_VALUE", * }; * const command = new PutBucketWebsiteCommand(input); * const response = await client.send(command); * // {}; * * ``` * * @param PutBucketWebsiteCommandInput - {@link PutBucketWebsiteCommandInput} * @returns {@link PutBucketWebsiteCommandOutput} * @see {@link PutBucketWebsiteCommandInput} for command's `input` shape. * @see {@link PutBucketWebsiteCommandOutput} for command's `response` shape. * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. * * @throws {@link S3ServiceException} * <p>Base exception class for all service exceptions from S3 service.</p> * * * @example Set website configuration on a bucket * ```javascript * // The following example adds website configuration to a bucket. * const input = { * Bucket: "examplebucket", * ContentMD5: "", * WebsiteConfiguration: { * ErrorDocument: { * Key: "error.html" * }, * IndexDocument: { * Suffix: "index.html" * } * } * }; * const command = new PutBucketWebsiteCommand(input); * const response = await client.send(command); * /* response is * { /* metadata only *\/ } * *\/ * ``` * * @public */ export declare class PutBucketWebsiteCommand extends PutBucketWebsiteCommand_base { /** @internal type navigation helper, not in runtime. */ protected static __types: { api: { input: PutBucketWebsiteRequest; output: {}; }; sdk: { input: PutBucketWebsiteCommandInput; output: PutBucketWebsiteCommandOutput; }; }; }