takomo 7.4.3 → 7.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,6 @@
1
1
  import { InternalAwsClientProps } from "../common/client.js";
2
2
  export interface S3Client {
3
3
  readonly putObject: (bucketName: string, key: string, object: string) => Promise<boolean>;
4
+ readonly getBucketLocation: (bucketName: string) => Promise<string>;
4
5
  }
5
6
  export declare const createS3Client: (props: InternalAwsClientProps) => S3Client;
@@ -17,8 +17,14 @@ export const createS3Client = (props) => {
17
17
  Body: object,
18
18
  })
19
19
  .then(() => true);
20
+ const getBucketLocation = (bucketName) => client
21
+ .getBucketLocation({
22
+ Bucket: bucketName,
23
+ })
24
+ .then((r) => r.LocationConstraint ?? "us-east-1");
20
25
  return {
21
26
  putObject,
27
+ getBucketLocation,
22
28
  };
23
29
  };
24
30
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/aws/s3/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AAEvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EACL,4BAA4B,EAC5B,mCAAmC,GACpC,MAAM,+BAA+B,CAAA;AAUtC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAA6B,EAAY,EAAE;IACxE,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC;QACpB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,WAAW,EAAE,KAAK,CAAC,kBAAkB;QACrC,aAAa,EAAE,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC;QAChD,cAAc,EAAE,oBAAoB,CAAC,EAAE,CAAC;KACzC,CAAC,CAAA;IAEF,MAAM,CAAC,eAAe,CAAC,GAAG,CACxB,4BAA4B,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,EACpE,mCAAmC,CACpC,CAAA;IAED,MAAM,SAAS,GAAG,CAChB,UAAkB,EAClB,GAAW,EACX,MAAc,EACI,EAAE,CACpB,MAAM;SACH,SAAS,CAAC;QACT,MAAM,EAAE,UAAU;QAClB,GAAG,EAAE,GAAG;QACR,IAAI,EAAE,MAAM;KACb,CAAC;SACD,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;IAErB,OAAO;QACL,SAAS;KACV,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/aws/s3/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AAEvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EACL,4BAA4B,EAC5B,mCAAmC,GACpC,MAAM,+BAA+B,CAAA;AAYtC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAA6B,EAAY,EAAE;IACxE,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC;QACpB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,WAAW,EAAE,KAAK,CAAC,kBAAkB;QACrC,aAAa,EAAE,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC;QAChD,cAAc,EAAE,oBAAoB,CAAC,EAAE,CAAC;KACzC,CAAC,CAAA;IAEF,MAAM,CAAC,eAAe,CAAC,GAAG,CACxB,4BAA4B,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,EACpE,mCAAmC,CACpC,CAAA;IAED,MAAM,SAAS,GAAG,CAChB,UAAkB,EAClB,GAAW,EACX,MAAc,EACI,EAAE,CACpB,MAAM;SACH,SAAS,CAAC;QACT,MAAM,EAAE,UAAU;QAClB,GAAG,EAAE,GAAG;QACR,IAAI,EAAE,MAAM;KACb,CAAC;SACD,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;IAErB,MAAM,iBAAiB,GAAG,CAAC,UAAkB,EAAmB,EAAE,CAChE,MAAM;SACH,iBAAiB,CAAC;QACjB,MAAM,EAAE,UAAU;KACnB,CAAC;SACD,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,IAAI,WAAW,CAAC,CAAA;IAErD,OAAO;QACL,SAAS;QACT,iBAAiB;KAClB,CAAA;AACH,CAAC,CAAA"}
@@ -1,4 +1,8 @@
1
1
  import { uuid } from "../../../../utils/strings.js";
2
+ const buildTemplateS3Url = (bucketName, key, location) => {
3
+ const locationPart = location !== "us-east-1" ? `${location}.` : "";
4
+ return `https://${bucketName}.s3.${locationPart}amazonaws.com/${key}`;
5
+ };
2
6
  export const uploadTemplate = async (state) => {
3
7
  const { stack, templateBody, logger, transitions, ctx } = state;
4
8
  const templateBucket = stack.templateBucket;
@@ -6,8 +10,6 @@ export const uploadTemplate = async (state) => {
6
10
  logger.debug("No template bucket configured");
7
11
  return transitions.validateTemplate(state);
8
12
  }
9
- const key = `${templateBucket.keyPrefix || ""}${stack.name}-${Date.now()}.yml`;
10
- const templateS3Url = `https://s3.amazonaws.com/${templateBucket.name}/${key}`;
11
13
  logger.debugObject("Template bucket configured:", () => templateBucket);
12
14
  const s3Client = await ctx.awsClientProvider.createS3Client({
13
15
  credentialProvider: stack.credentialManager.getCredentialProvider(),
@@ -15,8 +17,20 @@ export const uploadTemplate = async (state) => {
15
17
  id: uuid(),
16
18
  logger,
17
19
  });
20
+ const location = await s3Client.getBucketLocation(templateBucket.name);
21
+ // S3 client needs to be in the same region as the bucket is
22
+ const uploadClient = location === stack.region
23
+ ? s3Client
24
+ : await ctx.awsClientProvider.createS3Client({
25
+ credentialProvider: stack.credentialManager.getCredentialProvider(),
26
+ region: location,
27
+ id: uuid(),
28
+ logger,
29
+ });
30
+ const key = `${templateBucket.keyPrefix ?? ""}${stack.name}-${Date.now()}.yml`;
31
+ const templateS3Url = buildTemplateS3Url(templateBucket.name, key, location);
18
32
  logger.debug(`Upload template to: ${templateS3Url}`);
19
- await s3Client.putObject(templateBucket.name, key, templateBody);
33
+ await uploadClient.putObject(templateBucket.name, key, templateBody);
20
34
  return transitions.validateTemplate({ ...state, templateS3Url });
21
35
  };
22
36
  //# sourceMappingURL=upload-template.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"upload-template.js","sourceRoot":"","sources":["../../../../../src/command/stacks/deploy/steps/upload-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAA;AAInD,MAAM,CAAC,MAAM,cAAc,GAA2C,KAAK,EACzE,KAAK,EACL,EAAE;IACF,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,KAAK,CAAA;IAE/D,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,CAAA;IAE3C,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAA;QAC7C,OAAO,WAAW,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;IAC5C,CAAC;IAED,MAAM,GAAG,GAAG,GAAG,cAAc,CAAC,SAAS,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,CAAA;IAC9E,MAAM,aAAa,GAAG,4BAA4B,cAAc,CAAC,IAAI,IAAI,GAAG,EAAE,CAAA;IAE9E,MAAM,CAAC,WAAW,CAAC,6BAA6B,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,CAAA;IAEvE,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,cAAc,CAAC;QAC1D,kBAAkB,EAAE,KAAK,CAAC,iBAAiB,CAAC,qBAAqB,EAAE;QACnE,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,EAAE,EAAE,IAAI,EAAE;QACV,MAAM;KACP,CAAC,CAAA;IAEF,MAAM,CAAC,KAAK,CAAC,uBAAuB,aAAa,EAAE,CAAC,CAAA;IACpD,MAAM,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,CAAA;IAEhE,OAAO,WAAW,CAAC,gBAAgB,CAAC,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,CAAC,CAAA;AAClE,CAAC,CAAA"}
1
+ {"version":3,"file":"upload-template.js","sourceRoot":"","sources":["../../../../../src/command/stacks/deploy/steps/upload-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAA;AAInD,MAAM,kBAAkB,GAAG,CACzB,UAAkB,EAClB,GAAW,EACX,QAAiB,EACT,EAAE;IACV,MAAM,YAAY,GAAG,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;IACnE,OAAO,WAAW,UAAU,OAAO,YAAY,iBAAiB,GAAG,EAAE,CAAA;AACvE,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAA2C,KAAK,EACzE,KAAK,EACL,EAAE;IACF,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,KAAK,CAAA;IAE/D,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,CAAA;IAE3C,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAA;QAC7C,OAAO,WAAW,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;IAC5C,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,6BAA6B,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,CAAA;IAEvE,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,cAAc,CAAC;QAC1D,kBAAkB,EAAE,KAAK,CAAC,iBAAiB,CAAC,qBAAqB,EAAE;QACnE,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,EAAE,EAAE,IAAI,EAAE;QACV,MAAM;KACP,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;IAEtE,4DAA4D;IAC5D,MAAM,YAAY,GAChB,QAAQ,KAAK,KAAK,CAAC,MAAM;QACvB,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,MAAM,GAAG,CAAC,iBAAiB,CAAC,cAAc,CAAC;YACzC,kBAAkB,EAAE,KAAK,CAAC,iBAAiB,CAAC,qBAAqB,EAAE;YACnE,MAAM,EAAE,QAAQ;YAChB,EAAE,EAAE,IAAI,EAAE;YACV,MAAM;SACP,CAAC,CAAA;IAER,MAAM,GAAG,GAAG,GAAG,cAAc,CAAC,SAAS,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,CAAA;IAC9E,MAAM,aAAa,GAAG,kBAAkB,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAA;IAE5E,MAAM,CAAC,KAAK,CAAC,uBAAuB,aAAa,EAAE,CAAC,CAAA;IACpD,MAAM,YAAY,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,CAAA;IAEpE,OAAO,WAAW,CAAC,gBAAgB,CAAC,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,CAAC,CAAA;AAClE,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "takomo",
3
- "version": "7.4.3",
3
+ "version": "7.4.4",
4
4
  "description": "Organize, configure and deploy CloudFormation stacks.",
5
5
  "keywords": [
6
6
  "aws",