Skip to content

Commit

Permalink
Fix cdk local docker image ecr publishing
Browse files Browse the repository at this point in the history
Signed-off-by: Andre Kurait <akurait@amazon.com>
  • Loading branch information
AndreKurait committed Oct 14, 2024
1 parent 9dd3406 commit 08cb381
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 6 deletions.
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import {Effect, PolicyStatement, Role, ServicePrincipal} from "aws-cdk-lib/aws-iam";
import {Construct} from "constructs";
import {CpuArchitecture} from "aws-cdk-lib/aws-ecs";
import {ContainerImage, CpuArchitecture} from "aws-cdk-lib/aws-ecs";
import {RemovalPolicy, Stack} from "aws-cdk-lib";
import { IStringParameter, StringParameter } from "aws-cdk-lib/aws-ssm";
import * as forge from 'node-forge';
import { ClusterYaml } from "./migration-services-yaml";
import { DockerImageAsset } from "aws-cdk-lib/aws-ecr-assets";

export function getSecretAccessPolicy(secretArn: string): PolicyStatement {
return new PolicyStatement({
Expand All @@ -15,6 +16,9 @@ export function getSecretAccessPolicy(secretArn: string): PolicyStatement {
]
})
}
import * as fs from 'fs';
import * as path from 'path';
import * as os from 'os';

export function appendArgIfNotInExtraArgs(
baseCommand: string,
Expand Down Expand Up @@ -435,3 +439,25 @@ export function isStackInGovCloud(stack: Stack): boolean {
export function isRegionGovCloud(region: string): boolean {
return region.startsWith('us-gov-');
}

/**
* Creates a Docker image asset from the specified image name.
*
* This function creates a Docker image asset from the specified image name.
* It can use a local or remote image.
*
* @param {string} imageName - The name of the Docker image to use as the base image.
* @returns {ContainerImage} - A `ContainerImage` object representing the Docker image asset.
*/
export function makeDockerImageAsset(imageName: string): ContainerImage {
const sanitizedImageName = imageName.replace(/[^a-zA-Z0-9-_]/g, '_');
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'docker-build-' + sanitizedImageName));
const dockerfilePath = path.join(tempDir, 'Dockerfile');
const dockerfileContent = `
FROM ${imageName}
`;
fs.writeFileSync(dockerfilePath, dockerfileContent);

return ContainerImage.fromAsset(tempDir);
}

Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,10 @@ import {
ContainerDependencyCondition,
ServiceManagedVolume
} from "aws-cdk-lib/aws-ecs";
import {DockerImageAsset} from "aws-cdk-lib/aws-ecr-assets";
import {Duration, RemovalPolicy, Stack} from "aws-cdk-lib";
import {LogGroup, RetentionDays} from "aws-cdk-lib/aws-logs";
import {PolicyStatement, Role} from "aws-cdk-lib/aws-iam";
import {createDefaultECSTaskRole} from "../common-utilities";
import {createDefaultECSTaskRole, makeDockerImageAsset} from "../common-utilities";
import {OtelCollectorSidecar} from "./migration-otel-collector-sidecar";
import { IApplicationTargetGroup, INetworkTargetGroup } from "aws-cdk-lib/aws-elasticloadbalancingv2";

Expand All @@ -29,7 +28,6 @@ export interface MigrationServiceCoreProps extends StackPropsExt {
readonly vpc: IVpc,
readonly securityGroups: ISecurityGroup[],
readonly cpuArchitecture: CpuArchitecture,
readonly dockerFilePath?: string,
readonly dockerImageRegistryName: string,
readonly dockerImageCommand?: string[],
readonly dockerBuildArgs?: {
Expand Down Expand Up @@ -81,7 +79,7 @@ export class MigrationServiceCore extends Stack {
props.volumes.forEach(vol => serviceTaskDef.addVolume(vol))
}

let serviceImage = ContainerImage.fromRegistry(props.dockerImageRegistryName)
const serviceImage = makeDockerImageAsset(props.dockerImageRegistryName)

const serviceLogGroup = new LogGroup(this, 'ServiceLogGroup', {
retention: RetentionDays.ONE_MONTH,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ export class ReindexFromSnapshotStack extends MigrationServiceCore {
this.createService({
serviceName: 'reindex-from-snapshot',
taskInstanceCount: 0,
dockerImageRegistryName: "migrations/reindex-from-snapshot:latest",
dockerImageRegistryName: "migrations/reindex_from_snapshot:latest",
dockerImageCommand: ['/bin/sh', '-c', "/rfs-app/entrypoint.sh"],
securityGroups: securityGroups,
volumes: volumes,
Expand Down

0 comments on commit 08cb381

Please sign in to comment.