2

I have a lambda function that is written in nodejs (using AWS nodejs SDK) and we are using gradle (build.gradle) to package and deploy that to AWS.

Deployment is working fine but when I am trying to update tags on this Lambda and redeploying then the new tags are not being applied to that function.

So if I am deploying Lambda using build.gradle first time with TAG A then its working fine (By first time I mean when I am creating a new Lambda) and tag is being applied and I can see that on AWS Console. But when I am re-deploying it again by adding another tag "TAG B" then the new tag is not being applied and it is not updating the existing Lambda tags. Any idea or suggestion what I am doing wrong? Thanks

Below is the section of build.gradle file where I am applying the tags for Lambda.

createOrUpdateFunction {
    handler = 'index.handler'
    role = cfo.DataDigestContentSearchLambdaIamRoleArn
    runtime = 'python3.7'
    timeout = 10
    tags = [
        tagA: 'data-team',
        tagB: 'someValue'
    ]

Here is the complete build.gradle file

import com.amazonaws.services.lambda.model.TagResourceRequest

apply plugin: 'com.abc.gradle.nodejs.yarn'
apply plugin: 'com.abc.gradle.aws.lambda.deployment'

apply from: rootProject.file('gradle/yarn-webpacked-lambda.gradle')

nodejs {
    packaging {
        name = '@abc/data-fulfillment-facebook-lambda'

        dependency project(':core:js')
        dependency project(':platforms:facebook:js:core')
        dependency '@abc/data-ingest-api', abc_INGEST_SEMVER
        dependency '@abc/data-ingest-core', abc_INGEST_SEMVER
        dependency 'aws-sdk', AWS_SEMVER
    }
}

webpackPackageJson.dependencies << ['fb': FB_SEMVER]

lambdaRepository {
    artifactName = 'data-fulfillment-facebook'
}

lambda {
    functionName = "${config.aws.target.envPrefix}-${lambdaRepository.artifactName}"
}

def cfo = cloudformation.outputs as Map<String, String>

createOrUpdateFunction {
    handler = 'index.handler'
    role = cfo.DataFulfillmentFacebookLambdaIamRoleArn
    runtime = 'nodejs12.x'
    memorySize = 256
    timeout = 30
    tags = [
        team: 'data-team',
        name: 'someName'
    ]
    environmentAsMap << [
        FACEBOOK_LEDGER_TABLE_NAME: cfo.DataFulfillmentLedgerTableName,
        INSTAGRAM_DISCOVERY_TOKEN_SECRET: cfo.DataFulfillmentInstagramDiscoveryTokenSecretName
    ]
}

task registerTaskProcessor(type: RegisterTaskProcessorTask) {
    client 'target'
    tableName = cfo.DataFulfillmentTaskProcessorRegistryV2TableName
    entryName = 'facebook'
    rules << [regex: ['^facebook', [var: 'task.type']]]
    type = 'lambda-dispatch'
    params << [functionName: lambda.functionName, qualifier: 'live']
}
Dharman
  • 30,962
  • 25
  • 85
  • 135
Faisal Shani
  • 698
  • 1
  • 13
  • 37

0 Answers0