Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
}
if (options.connectionType === ConnectionType.VPC_LINK && options.vpcLink === undefined) {
throw new Error(`'connectionType' of VPC_LINK requires 'vpcLink' prop to be set`);
}
if (options.connectionType === ConnectionType.INTERNET && options.vpcLink !== undefined) {
throw new Error(`cannot set 'vpcLink' where 'connectionType' is INTERNET`);
}
if (options.credentialsRole) {
credentials = options.credentialsRole.roleArn;
} else if (options.credentialsPassthrough) {
// arn:aws:iam::*:user/*
// tslint:disable-next-line:max-line-length
credentials = Stack.of(this).formatArn({ service: 'iam', region: '', account: '*', resource: 'user', sep: '/', resourceName: '*' });
}
return {
type: integration._props.type,
uri: integration._props.uri,
cacheKeyParameters: options.cacheKeyParameters,
cacheNamespace: options.cacheNamespace,
contentHandling: options.contentHandling,
integrationHttpMethod: integration._props.integrationHttpMethod,
requestParameters: options.requestParameters,
requestTemplates: options.requestTemplates,
passthroughBehavior: options.passthroughBehavior,
integrationResponses: options.integrationResponses,
connectionType: options.connectionType,
connectionId: options.vpcLink ? options.vpcLink.vpcLinkId : undefined,
credentials,
protected getDefaultCluster(scope: Construct, vpc?: IVpc): Cluster {
// magic string to avoid collision with user-defined constructs
const DEFAULT_CLUSTER_ID = `EcsDefaultClusterMnL3mNNYN${vpc ? vpc.node.id : ''}`;
const stack = Stack.of(scope);
return stack.node.tryFindChild(DEFAULT_CLUSTER_ID) as Cluster || new Cluster(stack, DEFAULT_CLUSTER_ID, { vpc });
}
private renderArtifactStoresProperty(): CfnPipeline.ArtifactStoreMapProperty[] | undefined {
if (!this.crossRegion) { return undefined; }
// add the Pipeline's artifact store
const primaryRegion = this.requireRegion();
this._crossRegionSupport[primaryRegion] = {
replicationBucket: this.artifactBucket,
stack: Stack.of(this),
};
return Object.entries(this._crossRegionSupport).map(([region, support]) => ({
region,
artifactStore: this.renderArtifactStore(support.replicationBucket),
}));
}
const result = iam.Grant.addToPrincipal({
grantee,
actions: ['secretsmanager:GetSecretValue'],
resourceArns: [this.secretArn],
scope: this
});
if (versionStages != null && result.principalStatement) {
result.principalStatement.addCondition('ForAnyValue:StringEquals', {
'secretsmanager:VersionStage': versionStages
});
}
if (this.encryptionKey) {
// @see https://docs.aws.amazon.com/fr_fr/kms/latest/developerguide/services-secrets-manager.html
this.encryptionKey.grantDecrypt(
new kms.ViaServicePrincipal(`secretsmanager.${Stack.of(this).region}.amazonaws.com`, grantee.grantPrincipal)
);
}
return result;
}
private getOtherStackIfActionIsCrossAccount(action: IAction): Stack | undefined {
const pipelineStack = Stack.of(this);
if (action.actionProperties.resource) {
const resourceStack = Stack.of(action.actionProperties.resource);
// check if resource is from a different account
if (pipelineStack.account === resourceStack.account) {
return undefined;
} else {
this._crossAccountSupport[resourceStack.account] = resourceStack;
return resourceStack;
}
}
if (!action.actionProperties.account) {
return undefined;
}
private isGranteeFromAnotherAccount(grantee: iam.IGrantable): boolean {
if (!(Construct.isConstruct(grantee))) {
return false;
}
const bucketStack = Stack.of(this);
const identityStack = Stack.of(grantee);
return bucketStack.account !== identityStack.account;
}
}
'if [ $? -ne 0 ]; then',
'$PKG_CMD install -y ruby',
'fi',
'$PKG_CMD install -y awscli',
'TMP_DIR=`mktemp -d`',
'cd $TMP_DIR',
`aws s3 cp s3://aws-codedeploy-${Stack.of(this).region}/latest/install . --region ${Stack.of(this).region}`,
'chmod +x ./install',
'./install auto',
'rm -fr $TMP_DIR',
);
break;
case ec2.OperatingSystemType.WINDOWS:
asg.addUserData(
'Set-Variable -Name TEMPDIR -Value (New-TemporaryFile).DirectoryName',
`aws s3 cp s3://aws-codedeploy-${Stack.of(this).region}/latest/codedeploy-agent.msi $TEMPDIR\\codedeploy-agent.msi`,
'$TEMPDIR\\codedeploy-agent.msi /quiet /l c:\\temp\\host-agent-install-log.txt',
);
break;
}
}
private granteeStackDependsOnKeyStack(grantee: iam.IGrantable): string | undefined {
if (!(Construct.isConstruct(grantee))) {
return undefined;
}
const keyStack = Stack.of(this);
const granteeStack = Stack.of(grantee);
if (keyStack === granteeStack) {
return undefined;
}
return granteeStack.dependencies.includes(keyStack)
? granteeStack.account
: undefined;
}
public static fromEventBusArn(scope: Construct, id: string, eventBusArn: string): IEventBus {
const parts = Stack.of(scope).parseArn(eventBusArn);
class Import extends Resource implements IEventBus {
public readonly eventBusArn = eventBusArn;
public readonly eventBusName = parts.resourceName || '';
public readonly eventBusPolicy = '';
}
return new Import(scope, id);
}