Skip to content

Commit 890a980

Browse files
author
awstools
committed
feat(client-lightsail): This release adds Instance Metadata Service (IMDS) support for Lightsail instances.
1 parent 0dc1c57 commit 890a980

File tree

8 files changed

+3605
-2201
lines changed

8 files changed

+3605
-2201
lines changed

clients/client-lightsail/src/Lightsail.ts

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -660,6 +660,11 @@ import {
660660
UpdateDomainEntryCommandInput,
661661
UpdateDomainEntryCommandOutput,
662662
} from "./commands/UpdateDomainEntryCommand";
663+
import {
664+
UpdateInstanceMetadataOptionsCommand,
665+
UpdateInstanceMetadataOptionsCommandInput,
666+
UpdateInstanceMetadataOptionsCommandOutput,
667+
} from "./commands/UpdateInstanceMetadataOptionsCommand";
663668
import {
664669
UpdateLoadBalancerAttributeCommand,
665670
UpdateLoadBalancerAttributeCommandInput,
@@ -5948,6 +5953,43 @@ export class Lightsail extends LightsailClient {
59485953
}
59495954
}
59505955

5956+
/**
5957+
* <p>Modifies the Amazon Lightsail instance metadata parameters on a running or stopped
5958+
* instance. When you modify the parameters on a running instance, the <code>GetInstance</code>
5959+
* or <code>GetInstances</code> API operation initially responds with a state of
5960+
* <code>pending</code>. After the parameter modifications are successfully applied, the state
5961+
* changes to <code>applied</code> in subsequent <code>GetInstance</code> or
5962+
* <code>GetInstances</code> API calls. For more information, see <a href="https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-configuring-instance-metadata-service">Use IMDSv2 with an Amazon Lightsail instance</a> in the <i>Amazon Lightsail Developer Guide</i>.</p>
5963+
*/
5964+
public updateInstanceMetadataOptions(
5965+
args: UpdateInstanceMetadataOptionsCommandInput,
5966+
options?: __HttpHandlerOptions
5967+
): Promise<UpdateInstanceMetadataOptionsCommandOutput>;
5968+
public updateInstanceMetadataOptions(
5969+
args: UpdateInstanceMetadataOptionsCommandInput,
5970+
cb: (err: any, data?: UpdateInstanceMetadataOptionsCommandOutput) => void
5971+
): void;
5972+
public updateInstanceMetadataOptions(
5973+
args: UpdateInstanceMetadataOptionsCommandInput,
5974+
options: __HttpHandlerOptions,
5975+
cb: (err: any, data?: UpdateInstanceMetadataOptionsCommandOutput) => void
5976+
): void;
5977+
public updateInstanceMetadataOptions(
5978+
args: UpdateInstanceMetadataOptionsCommandInput,
5979+
optionsOrCb?: __HttpHandlerOptions | ((err: any, data?: UpdateInstanceMetadataOptionsCommandOutput) => void),
5980+
cb?: (err: any, data?: UpdateInstanceMetadataOptionsCommandOutput) => void
5981+
): Promise<UpdateInstanceMetadataOptionsCommandOutput> | void {
5982+
const command = new UpdateInstanceMetadataOptionsCommand(args);
5983+
if (typeof optionsOrCb === "function") {
5984+
this.send(command, optionsOrCb);
5985+
} else if (typeof cb === "function") {
5986+
if (typeof optionsOrCb !== "object") throw new Error(`Expect http options but get ${typeof optionsOrCb}`);
5987+
this.send(command, optionsOrCb || {}, cb);
5988+
} else {
5989+
return this.send(command, optionsOrCb);
5990+
}
5991+
}
5992+
59515993
/**
59525994
* <p>Updates the specified attribute for a load balancer. You can only update one attribute at
59535995
* a time.</p>

clients/client-lightsail/src/LightsailClient.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -423,6 +423,10 @@ import {
423423
} from "./commands/UpdateDistributionBundleCommand";
424424
import { UpdateDistributionCommandInput, UpdateDistributionCommandOutput } from "./commands/UpdateDistributionCommand";
425425
import { UpdateDomainEntryCommandInput, UpdateDomainEntryCommandOutput } from "./commands/UpdateDomainEntryCommand";
426+
import {
427+
UpdateInstanceMetadataOptionsCommandInput,
428+
UpdateInstanceMetadataOptionsCommandOutput,
429+
} from "./commands/UpdateInstanceMetadataOptionsCommand";
426430
import {
427431
UpdateLoadBalancerAttributeCommandInput,
428432
UpdateLoadBalancerAttributeCommandOutput,
@@ -589,6 +593,7 @@ export type ServiceInputTypes =
589593
| UpdateDistributionBundleCommandInput
590594
| UpdateDistributionCommandInput
591595
| UpdateDomainEntryCommandInput
596+
| UpdateInstanceMetadataOptionsCommandInput
592597
| UpdateLoadBalancerAttributeCommandInput
593598
| UpdateRelationalDatabaseCommandInput
594599
| UpdateRelationalDatabaseParametersCommandInput;
@@ -745,6 +750,7 @@ export type ServiceOutputTypes =
745750
| UpdateDistributionBundleCommandOutput
746751
| UpdateDistributionCommandOutput
747752
| UpdateDomainEntryCommandOutput
753+
| UpdateInstanceMetadataOptionsCommandOutput
748754
| UpdateLoadBalancerAttributeCommandOutput
749755
| UpdateRelationalDatabaseCommandOutput
750756
| UpdateRelationalDatabaseParametersCommandOutput;
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
// smithy-typescript generated code
2+
import { getSerdePlugin } from "@aws-sdk/middleware-serde";
3+
import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http";
4+
import { Command as $Command } from "@aws-sdk/smithy-client";
5+
import {
6+
FinalizeHandlerArguments,
7+
Handler,
8+
HandlerExecutionContext,
9+
HttpHandlerOptions as __HttpHandlerOptions,
10+
MetadataBearer as __MetadataBearer,
11+
MiddlewareStack,
12+
SerdeContext as __SerdeContext,
13+
} from "@aws-sdk/types";
14+
15+
import { LightsailClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../LightsailClient";
16+
import {
17+
UpdateInstanceMetadataOptionsRequest,
18+
UpdateInstanceMetadataOptionsRequestFilterSensitiveLog,
19+
UpdateInstanceMetadataOptionsResult,
20+
UpdateInstanceMetadataOptionsResultFilterSensitiveLog,
21+
} from "../models/models_1";
22+
import {
23+
deserializeAws_json1_1UpdateInstanceMetadataOptionsCommand,
24+
serializeAws_json1_1UpdateInstanceMetadataOptionsCommand,
25+
} from "../protocols/Aws_json1_1";
26+
27+
export interface UpdateInstanceMetadataOptionsCommandInput extends UpdateInstanceMetadataOptionsRequest {}
28+
export interface UpdateInstanceMetadataOptionsCommandOutput
29+
extends UpdateInstanceMetadataOptionsResult,
30+
__MetadataBearer {}
31+
32+
/**
33+
* <p>Modifies the Amazon Lightsail instance metadata parameters on a running or stopped
34+
* instance. When you modify the parameters on a running instance, the <code>GetInstance</code>
35+
* or <code>GetInstances</code> API operation initially responds with a state of
36+
* <code>pending</code>. After the parameter modifications are successfully applied, the state
37+
* changes to <code>applied</code> in subsequent <code>GetInstance</code> or
38+
* <code>GetInstances</code> API calls. For more information, see <a href="https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-configuring-instance-metadata-service">Use IMDSv2 with an Amazon Lightsail instance</a> in the <i>Amazon Lightsail Developer Guide</i>.</p>
39+
* @example
40+
* Use a bare-bones client and the command you need to make an API call.
41+
* ```javascript
42+
* import { LightsailClient, UpdateInstanceMetadataOptionsCommand } from "@aws-sdk/client-lightsail"; // ES Modules import
43+
* // const { LightsailClient, UpdateInstanceMetadataOptionsCommand } = require("@aws-sdk/client-lightsail"); // CommonJS import
44+
* const client = new LightsailClient(config);
45+
* const command = new UpdateInstanceMetadataOptionsCommand(input);
46+
* const response = await client.send(command);
47+
* ```
48+
*
49+
* @see {@link UpdateInstanceMetadataOptionsCommandInput} for command's `input` shape.
50+
* @see {@link UpdateInstanceMetadataOptionsCommandOutput} for command's `response` shape.
51+
* @see {@link LightsailClientResolvedConfig | config} for LightsailClient's `config` shape.
52+
*
53+
*/
54+
export class UpdateInstanceMetadataOptionsCommand extends $Command<
55+
UpdateInstanceMetadataOptionsCommandInput,
56+
UpdateInstanceMetadataOptionsCommandOutput,
57+
LightsailClientResolvedConfig
58+
> {
59+
// Start section: command_properties
60+
// End section: command_properties
61+
62+
constructor(readonly input: UpdateInstanceMetadataOptionsCommandInput) {
63+
// Start section: command_constructor
64+
super();
65+
// End section: command_constructor
66+
}
67+
68+
/**
69+
* @internal
70+
*/
71+
resolveMiddleware(
72+
clientStack: MiddlewareStack<ServiceInputTypes, ServiceOutputTypes>,
73+
configuration: LightsailClientResolvedConfig,
74+
options?: __HttpHandlerOptions
75+
): Handler<UpdateInstanceMetadataOptionsCommandInput, UpdateInstanceMetadataOptionsCommandOutput> {
76+
this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));
77+
78+
const stack = clientStack.concat(this.middlewareStack);
79+
80+
const { logger } = configuration;
81+
const clientName = "LightsailClient";
82+
const commandName = "UpdateInstanceMetadataOptionsCommand";
83+
const handlerExecutionContext: HandlerExecutionContext = {
84+
logger,
85+
clientName,
86+
commandName,
87+
inputFilterSensitiveLog: UpdateInstanceMetadataOptionsRequestFilterSensitiveLog,
88+
outputFilterSensitiveLog: UpdateInstanceMetadataOptionsResultFilterSensitiveLog,
89+
};
90+
const { requestHandler } = configuration;
91+
return stack.resolve(
92+
(request: FinalizeHandlerArguments<any>) =>
93+
requestHandler.handle(request.request as __HttpRequest, options || {}),
94+
handlerExecutionContext
95+
);
96+
}
97+
98+
private serialize(input: UpdateInstanceMetadataOptionsCommandInput, context: __SerdeContext): Promise<__HttpRequest> {
99+
return serializeAws_json1_1UpdateInstanceMetadataOptionsCommand(input, context);
100+
}
101+
102+
private deserialize(
103+
output: __HttpResponse,
104+
context: __SerdeContext
105+
): Promise<UpdateInstanceMetadataOptionsCommandOutput> {
106+
return deserializeAws_json1_1UpdateInstanceMetadataOptionsCommand(output, context);
107+
}
108+
109+
// Start section: command_body_extra
110+
// End section: command_body_extra
111+
}

clients/client-lightsail/src/commands/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ export * from "./UpdateContainerServiceCommand";
150150
export * from "./UpdateDistributionBundleCommand";
151151
export * from "./UpdateDistributionCommand";
152152
export * from "./UpdateDomainEntryCommand";
153+
export * from "./UpdateInstanceMetadataOptionsCommand";
153154
export * from "./UpdateLoadBalancerAttributeCommand";
154155
export * from "./UpdateRelationalDatabaseCommand";
155156
export * from "./UpdateRelationalDatabaseParametersCommand";

clients/client-lightsail/src/models/models_0.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -887,6 +887,7 @@ export enum OperationType {
887887
UpdateDistribution = "UpdateDistribution",
888888
UpdateDistributionBundle = "UpdateDistributionBundle",
889889
UpdateDomainEntry = "UpdateDomainEntry",
890+
UpdateInstanceMetadataOptions = "UpdateInstanceMetadataOptions",
890891
UpdateLoadBalancerAttribute = "UpdateLoadBalancerAttribute",
891892
UpdateRelationalDatabase = "UpdateRelationalDatabase",
892893
UpdateRelationalDatabaseParameters = "UpdateRelationalDatabaseParameters",

0 commit comments

Comments
 (0)