text:
No way to add an existing lambda function to an @model?

I went through the process of adding a lambda trigger to all my @model's
But then I added a new model and want to add that same function as a trigger to that @model.
There doesnt' appear to be anyway to do that.

Hey @CodySwannGT, to confirm is this the Lambda trigger template provided for Lambda NodeJs runtime and you would like to select the same function for a newly added model.
For example:

@ykethan that's exactly right.
I managed to get it done by editing the cloudformation template directly, but it would be super nice if you could do it through the CLI

authors: CodySwannGT ykethan


text:
Existing schema attributes cannot be modified or deleted.

How did you install the Amplify CLI?
npm
If applicable, what version of Node.js are you using?
v18.16.0
Amplify CLI Version
12.2.3
What operating system are you using?
Mac
Did you make any manual changes to the cloud resources managed by Amplify? Please describe the changes made.
Custom attributes added in yml for cognition user pool:
      Schema:
        - Name: email
          Required: true
          Mutable: true
        - Name: stripe_id
          Mutable: 'true'
          AttributeDataType: String
          StringAttributeConstraints:
            MaxLength: '256'
            MinLength: '1'
        - Name: stripe_sub_id
          Mutable: 'true'
          AttributeDataType: String
          StringAttributeConstraints:
            MaxLength: '256'
            MinLength: '1'
        - Name: stripe_plan_name
          Mutable: 'true'
          AttributeDataType: String
        - Name: company
          Mutable: 'true'
          AttributeDataType: String
        - Name: vat_number
          Mutable: 'true'
          AttributeDataType: String
        - Name: address_1
          Mutable: 'true'
          AttributeDataType: String
        - Name: address_2
          Mutable: 'true'
          AttributeDataType: String
        - Name: city
          Mutable: 'true'
          AttributeDataType: String
        - Name: postcode
          Mutable: 'true'
          AttributeDataType: String
        - Name: state
          Mutable: 'true'
          AttributeDataType: String
        - Name: country
          Mutable: 'true'
          AttributeDataType: String

Describe the bug
This is an old project that hasn't had any work for a while.
After upgrading to amplify cli v12.2.3 the .yml file is deleted and override.ts is required for custom attributes.
I have the following override.ts in place:
import { AmplifyAuthCognitoStackTemplate } from "@aws-amplify/cli-extensibility-helper";

export function override(resources: AmplifyAuthCognitoStackTemplate) {
  resources.userPool.schema = [
    ...(resources.userPool.schema as any[]), // Carry over existing attributes (example: email)
    {
      attributeDataType: "String",
      mutable: true,
      name: "email",
      required: true,
    },
    {
      attributeDataType: "String",
      mutable: true,
      name: "stripe_id",
      stringAttributeConstraints: {
        maxLength: "256",
        minLength: "1",
      },
    },
    {
      attributeDataType: "String",
      mutable: true,
      name: "stripe_sub_id",

      stringAttributeConstraints: {
        maxLength: "256",
        minLength: "1",
      },
    },
    {
      attributeDataType: "String",
      mutable: true,
      name: "stripe_plan_name",
    },
    {
      attributeDataType: "String",
      mutable: true,
      name: "company",
    },
    {
      attributeDataType: "String",
      mutable: true,
      name: "address_1",
    },
    {
      attributeDataType: "String",
      mutable: true,
      name: "address_2",
    },
    {
      attributeDataType: "String",
      mutable: true,
      name: "city",
    },
    {
      attributeDataType: "String",
      mutable: true,
      name: "state",
    },
    {
      attributeDataType: "String",
      mutable: true,
      name: "postcode",
    },
    {
      attributeDataType: "String",
      mutable: true,
      name: "country",
    },
    {
      attributeDataType: "String",
      mutable: true,
      name: "vat_number",
    },
  ];
}

However attempting amplify push results in the error  Existing schema attributes cannot be modified or deleted.
I am therefore unable to do any further work to the back end of this project as all pushes fail.
Expected behavior
Pushing should work because override.ts should mean that cognito attributes aren't being changed.
Reproduction steps
You will need to start with an earlier version of the amplify cli and use the supplied yaml file to create the custom attributes. Upgrade to the latest CLI and then attempt a push using the supplied override.ts.
Project Identifier
dbbb418abb38539d3a09d33eacc39132
Log output

# Put your logs below this line

Additional information
No response
Before submitting, please confirm:

[X] I have done my best to include a minimal, self-contained set of instructions for consistently reproducing the issue.
[X] I have removed any sensitive information from my code snippets and submission.

Hey @tscole, thank you for reaching out. if you add a console.log(resources.userPool.schema) at the top, do you observe the email attribute bring printed out in the terminal? if yes, could you remove the following block and retry the push.
{       attributeDataType: "String",       mutable: true,       name: "email",       required: true,     },
additionally, were there any pushes before this that was successful and attributes were added via the override?

Hi @ykethan Where exactly do you do you want me to add the console.log ? I tried adding it just above resources.userPool.schema = [ but nothing at all gets output to the terminal.

No attributes have been added via override. They were all added by the original yaml file.

apologies, yes add the console log right under the override handler. could you run amplify build and let us know if you observe an output.
similar to

Nothing at all happens if I run amplify build. That's not a command I usually use so I don't know if thats a new issue? Running amplify push doesn't output anything like your screenshot above.

Running amplify build --debug gives the following output and nothing else:
Overrides functionality is not implemented for this category

thank you for hopping on the call, I was great chatting with you.
We were able to mitigate the issue by updating the Amplify cli to v7.6.15. Then amplify auth override to add the schema attributes.
As the version utilized nodej12 in the auth lambda functions we updated the Amplify CLI version to v8.2.0. where we an observe error
Command was killed with SIGSEGV (Segmentation fault): yarn install

To mitigate this error message we cd'd into the backend folder and did a npm install. Additionally, cd'd into the backend /function/<function-name>/src and installed using npm.
The push succeeded when running amplify push

Closing the issue, please feel free in reaching out to us again.

source: gharchive/issue

authors: tscole ykethan

repo: aws-amplify/amplify-cli

license_type: permissive

license_source: github-api


text:
Cannot push any changes -  An error occurred while fetching the app backend: Network Failure

Before opening, please confirm:

[X] I have installed the latest version of the Amplify CLI (see above), and confirmed that the issue still persists.
[X] I have searched for duplicate or closed issues.
[X] I have read the guide for submitting bug reports.
[X] I have done my best to include a minimal, self-contained set of instructions for consistently reproducing the issue.

How did you install the Amplify CLI?
npm
If applicable, what version of Node.js are you using?
15.7.0
Amplify CLI Version
5.2.1
What operating system are you using?
Windows 10 / Ubuntu 20.04 WSL
Amplify Categories
Not applicable
Amplify Commands
push
Describe the bug
Running amplify push -y no longer works. The admin UI login page is opened in the browser and displays the following error message:
 An error occurred while fetching the app backend: Network Failure

There have been constant issues with authentication ever since the admin UI has been developed, integrated, and released.
Any ideas what's going on this time?
Expected behavior
The CI command amplify push -y should not require login via a browser.
Reproduction steps

Install amplify CLI 5.2.1
Run amplify push -y and see that issues occur when trying to login.

GraphQL schema(s)
No response
Log output
No response
Additional information
No response

Looks like it could be a CORS issue?

The solution, for me at least, was to remove the Amplify Admin UI.

Disable Amplify Admin UI in the AWS management console.
Run amplify configure project
Selected Wrapped profile name.

~/.aws/config
[profile ResourcesHubUser]
sso_start_url=https://xxxxxxxx.awsapps.com/start
sso_region=us-east-1
sso_account_id=xxxxxxxxxxxx
sso_role_name=PowerUserAccess
region=us-east-1
output=json

[profile Wrapped]
credential_process = aws2-wrap --process --profile ResourcesHubUser
region = us-east-1

We are using AWS SSO so I need to use a little python script aws2-wrap to get SSO auth working.
https://github.com/linaro-its/aws2-wrap

Run aws sso login --profile ResourcesHubUser
Run amplify push -y

I am glad that you've found a workaround! I am unable to reproduce any cors or network issue associated with the admin ui credential handshake.
If you can provide more detailed repeatable steps so that I can reproduce I'd be happy to look into it further

Hi @kylekirkby, closing this issue due to lack of response. Please comment below if you run into this again.

authors: jhockett johnpc kylekirkby


text:
AppSync codegen models throws @Nullable @Nullable

Before opening, please confirm:

[X] I have installed the latest version of the Amplify CLI (see above), and confirmed that the issue still persists.
[X] I have searched for duplicate or closed issues.
[X] I have read the guide for submitting bug reports.
[X] I have done my best to include a minimal, self-contained set of instructions for consistently reproducing the issue.

How did you install the Amplify CLI?
No response
If applicable, what version of Node.js are you using?
No response
Amplify CLI Version
Issue reported with 4.18.0, but I was unable to reproduce with 4.18.0 or 6.3.1
What operating system are you using?
Mac, for Android development
Amplify Codegen Command
codegen models
Describe the bug
AppSync codegen models generates duplicate @Nullable decorators (https://github.com/awslabs/aws-mobile-appsync-sdk-android/issues/273).
Expected behavior
Only one @Nullable should be generated.
Reproduction steps
Schema/steps attached in GitHub issue.  I was unable to reproduce with just setting up an Android project, amplify add auth amplify add api and amplify codegen models amplify push, so your milage may vary.  In theory you should see these files generated in the app/build/generated/source/appsync/... folder, but I was never able to generate that folder in my testing.
GraphQL schema(s)

# Put schemas below this line
type Tenant
  @model
  @searchable
  @auth(rules: [{ allow: groups, groupsField: "id" }]) {
  id: ID!
  organisations: [Organisation] @connection(name: "OrganisationsByTentant", fields: ["id"])
  isLocked: Boolean!
  isDeleted: Boolean!
  updatedAt: AWSDateTime
  createdAt: AWSDateTime
}

type Organisation
  @model
  @searchable
  @key(name: "OrganisationsByTentant", fields: ["tenantId"])
  @auth(rules: [{ allow: groups, groupsField: "tenantId" }]) {
  id: ID!
  tenantId: ID!
  users: [User] @connection(name: "UsersByOrganisation", fields: ["id"])
  invoices: [Invoice] @connection(name: "InvoicesbyOrganisation", fields: ["id"])
  customers: [Customer] @connection(name: "CustomersByOrganisation", fields: ["id"])
  devices: [Device] @connection(name: "DevicesByOrganisation", fields: ["id"])
  projects: [Project] @connection(name: "ProjectsByOrganisation", fields: ["id"])
  companyName: String
  companyNameAddition: String
  address: Address
  taxNo: String
  website: AWSURL
  companyLogoUrl: String
  subscriptionType: SubcriptionType!
  subscriptionPricePerMonth: Float
  subscriptionricePerMeter: Float
  deviceRegistration: Boolean
  registrationCode: String
  isDeleted: Boolean!
  updatedAt: AWSDateTime
  createdAt: AWSDateTime
}

type Project
  @model
  @searchable
  @key(
    name: "ProjectsByOrganisation"
    fields: ["organisationId", "createdAt"]
    queryField: "projectByOrganisation"
  )
  @key(name: "byCustomerId", fields: ["customerId"])
  @auth(rules: [{ allow: groups, groupsField: "tenantId" }]) {
  id: ID!
  tenantId: ID!
  organisationId: ID!
  projectItems: [ProjectItem] @connection(name: "byProject", fields: ["id"])
  purchases: [Purchase]
    @connection(name: "byProjectPurchase", fields: ["id"])
  customerId: ID!
  type: ProjectType!
  name: String
  address: Address
  status: ProjectStatus!
  isDeleted: Boolean!
  updatedAt: AWSDateTime
  createdAt: AWSDateTime
}

type ProjectItem
  @model
  @searchable
  @key(
    name: "byProject"
    fields: ["projectId", "createdAt"]
    queryField: "projectItemByProject"
  )
  @auth(rules: [{ allow: groups, groupsField: "tenantId" }]) {
  id: ID!
  tenantId: ID!
  projectId: ID!
  cblPlId: ID!
  cblPlName: String!
  drums: [Drum] @connection(name: "byProjectItem", fields: ["id"])
  importKlz: Boolean
  importKlzFileUrl: String
  mergeLv: Boolean
  importLvFileUrl: String
  lvNo: String
  lineNo: String
  startDesc: String
  startLocation: String
  startSymbol: String
  endDesc: String
  endLocation: String
  endSymbol: String
  cableType: String
  cableLength: Float
  lineFunction: String
  comment: String
  status: ProjectStatus!
  isDeleted: Boolean
  updatedAt: AWSDateTime
  createdAt: AWSDateTime
}

type Purchase
  @model
  @searchable
  @key(name: "byProjectPurchase", fields: ["projectId"])
  @auth(rules: [{ allow: groups, groupsField: "tenantId" }]) {
  id: ID!
  tenantId: ID!
  projectId: ID!
  purchasedById: ID!
  isOrdered: Boolean
  isCanceled: Boolean
  comment: String
  updatedAt: AWSDateTime
  createdAt: AWSDateTime
}

type Drum
  @model
  @searchable
  @key(name: "byProjectItem", fields: ["projectItemId"])
  @key(name: "byCableTyp", fields: ["cableTypeId"])
  @auth(rules: [{ allow: groups, groupsField: "tenantId" }]) {
  id: ID!
  tenantId: ID!
  projectItemId: ID!
  device: Device @connection
  cableTypeId: ID!
  dribbleCode: String
  cableLength: String
  status: String
  criticalAmount: String
  autoPurchase: Boolean
  isDeleted: Boolean
  updatedAt: AWSDateTime
  createdAt: AWSDateTime
}

type Device
  @model
  @searchable
  @key(
    name: "DevicesByOrganisation"
    fields: ["organisationId", "shortCode"]
    queryField: "deviceByOrganisation"
  )
  @auth(rules: [{ allow: groups, groupsField: "tenantId" }]) {
  id: ID!
  tenantId: ID!
  organisationId: ID!
  type: DeviceType!
  userAgent: String
  shortCode: String
  colorHex: String
  hostName: String
  macAddress: String
  softwareVersion: String
  batteryState: Int
  isDeleted: Boolean
  isLocked: Boolean
  updatedAt: AWSDateTime
  createdAt: AWSDateTime
}

type Customer
  @model
  @searchable
  @key(
    name: "CustomersByOrganisation"
    fields: ["organisationId", "companyName"]
    queryField: "customerByOrganisation"
  )
  @auth(rules: [{ allow: groups, groupsField: "tenantId" }]) {
  id: ID!
  tenantId: ID!
  organisationId: ID!
  projects: [Project] @connection(name: "byCustomerId", fields: ["id"])
  companyName: String
  companyNameAddition: String
  address: Address
  firstName: String
  lastName: String
  phoneNo: String
  mobileNo: String
  eMail: AWSEmail
  website: AWSURL
  isDeleted: Boolean
  updatedAt: AWSDateTime
  createdAt: AWSDateTime
}

type Invoice
  @model
  @searchable
  @key(
    name: "InvoicesbyOrganisation"
    fields: ["organisationId", "createdAt"]
    queryField: "invoiceByOrganisation"
  )
  @auth(rules: [{ allow: groups, groupsField: "tenantId" }]) {
  id: ID!
  tenantId: ID!
  organisationId: ID!
  pdfFileUrl: String
  updatedAt: AWSDateTime
  createdAt: AWSDateTime
}

type User
  @model
  @searchable
  @key(
    name: "UsersByOrganisation"
    fields: ["organisationId", "lastName"]
    queryField: "userByOrganisation"
  )
  @auth(rules: [{ allow: groups, groupsField: "tenantId" }]) {
  id: ID!
  tenantId: ID!
  organisationId: ID!
  organisation: Organisation @connection(fields: ["organisationId"])
  mainAccount: Boolean!
  firstName: String
  lastName: String
  shortName: String
  phoneNo: String
  mobilNo: String
  eMail: AWSEmail!
  pictureUrl: String
  isOnline: Boolean
  emailNotification: Boolean
  isDeleted: Boolean
  isLocked: Boolean
  updatedAt: AWSDateTime
  createdAt: AWSDateTime
}

################ To be configured ################
type CableType
@model
@searchable {
  id: ID!
  drums: [Drum] @connection(name: "byCableTyp", fields: ["id"])
  name: String
  cableTypeValidations: [CableTypeValidation]
    @connection(name: "byCableTypeValidations", fields: ["id"])
  capacity: Float
  isDeleted: Boolean
  updatedAt: AWSDateTime
  createdAt: AWSDateTime
}

type CableTypeValidation
  @model
  @searchable
  @key(name: "byCableTypeValidations", fields: ["cableTypeId"]) {
  id: ID!
  cableTypeId: ID!
  name: String
  capacity: Float
  isDeleted: Boolean
  updatedAt: AWSDateTime
  createdAt: AWSDateTime
}

################ CUSTOM OVERRIDES ################

type ModelUserConnection {
  items: [User]
  nextToken: String
  scannedCount: Int
  count: Int
}

type Address
{
  latitude: String
  longitude: String
  street: String
  streetNo: String
  zipCode: Int
  city: String
  country: String
}

################ CUSTOM ENUMS ################

enum ProjectStatus {
  open
  closed
  progress
}
enum ProjectType {
  planned
  dispute
}
enum DeviceType {
  android
  ios
}
enum SubcriptionType {
  free
  paid
}

Log output

# Put your logs below this line

> Task :clean
> Task :app:clean
> Task :app:preBuild UP-TO-DATE
> Task :app:preDebugBuild UP-TO-DATE
> Task :app:compileDebugAidl NO-SOURCE
> Task :app:nodeSetup UP-TO-DATE
> Task :app:compileDebugRenderscript NO-SOURCE

> Task :app:installApolloCodegen
npm WARN deprecated core-js@2.6.11: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.

> Task :app:generateDebugApolloIR
> Task :app:generateDebugApolloClasses
> Task :app:generateDebugBuildConfig
> Task :app:writeDebugApplicationId
> Task :app:generateSafeArgsDebug
> Task :app:prepareLintJar UP-TO-DATE
> Task :app:prepareLintJarForPublish UP-TO-DATE
> Task :app:generateDebugSources
> Task :app:dataBindingExportBuildInfoDebug
> Task :app:dataBindingMergeGenClassesDebug
> Task :app:dataBindingMergeDependencyArtifactsDebug
> Task :app:generateDebugResValues
> Task :app:generateDebugResources
> Task :app:mergeDebugResources
> Task :app:dataBindingGenBaseClassesDebug
> Task :app:dataBindingExportFeaturePackageIdsDebug
> Task :app:mainApkListPersistenceDebug
> Task :app:createDebugCompatibleScreenManifests
> Task :app:extractDeepLinksDebug
> Task :app:processDebugManifest
> Task :app:processDebugResources
> Task :app:kaptGenerateStubsDebugKotlin
> Task :app:mergeDebugShaders
> Task :app:compileDebugShaders
> Task :app:generateDebugAssets
> Task :app:mergeDebugAssets
> Task :app:processDebugJavaRes NO-SOURCE
> Task :app:checkDebugDuplicateClasses
> Task :app:desugarDebugFileDependencies
> Task :app:mergeLibDexDebug
> Task :app:mergeDebugJniLibFolders
> Task :app:validateSigningDebug
> Task :app:mergeDebugNativeLibs
> Task :app:stripDebugDebugSymbols

> Task :app:kaptDebugKotlin
[WARN] Incremental annotation processing requested, but support is disabled because the following processors are not incremental: androidx.room.RoomProcessor (DYNAMIC).

> Task :app:compileDebugKotlin
w: /Users/.../mobileapp/data/api/ClientFactory.kt: (22, 17): Variable 'CognitoUserPoolsSignInProvider' is never used

> Task :app:mergeExtDexDebug
> Task :app:javaPreCompileDebug

> Task :app:compileDebugJavaWithJavac
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListDevicesQuery.java:290: error: Nullable is not a repeatable annotation type
    final @Nullable @Nullable List<Item> items;
                    ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListDevicesQuery.java:300: error: Nullable is not a repeatable annotation type
    public ListDevices(@Nonnull String __typename, @Nullable @Nullable List<Item> items,
                                                             ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListDevicesQuery.java:311: error: Nullable is not a repeatable annotation type
    public @Nullable @Nullable List<Item> items() {
                     ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListProjectItemsQuery.java:301: error: Nullable is not a repeatable annotation type
    final @Nullable @Nullable List<Item> items;
                    ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListProjectItemsQuery.java:311: error: Nullable is not a repeatable annotation type
    public ListProjectItems(@Nonnull String __typename, @Nullable @Nullable List<Item> items,
                                                                  ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListProjectItemsQuery.java:322: error: Nullable is not a repeatable annotation type
    public @Nullable @Nullable List<Item> items() {
                     ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchTenantsQuery.java:303: error: Nullable is not a repeatable annotation type
    final @Nullable @Nullable List<Item> items;
                    ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchTenantsQuery.java:315: error: Nullable is not a repeatable annotation type
    public SearchTenants(@Nonnull String __typename, @Nullable @Nullable List<Item> items,
                                                               ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchTenantsQuery.java:327: error: Nullable is not a repeatable annotation type
    public @Nullable @Nullable List<Item> items() {
                     ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchCableTypesQuery.java:306: error: Nullable is not a repeatable annotation type
    final @Nullable @Nullable List<Item> items;
                    ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchCableTypesQuery.java:318: error: Nullable is not a repeatable annotation type
    public SearchCableTypes(@Nonnull String __typename, @Nullable @Nullable List<Item> items,
                                                                  ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchCableTypesQuery.java:330: error: Nullable is not a repeatable annotation type
    public @Nullable @Nullable List<Item> items() {
                     ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListCableTypesQuery.java:281: error: Nullable is not a repeatable annotation type
    final @Nullable @Nullable List<Item> items;
                    ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListCableTypesQuery.java:291: error: Nullable is not a repeatable annotation type
    public ListCableTypes(@Nonnull String __typename, @Nullable @Nullable List<Item> items,
                                                                ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListCableTypesQuery.java:302: error: Nullable is not a repeatable annotation type
    public @Nullable @Nullable List<Item> items() {
                     ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchCustomersQuery.java:313: error: Nullable is not a repeatable annotation type
    final @Nullable @Nullable List<Item> items;
                    ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchCustomersQuery.java:325: error: Nullable is not a repeatable annotation type
    public SearchCustomers(@Nonnull String __typename, @Nullable @Nullable List<Item> items,
                                                                 ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchCustomersQuery.java:337: error: Nullable is not a repeatable annotation type
    public @Nullable @Nullable List<Item> items() {
                     ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListProjectsQuery.java:285: error: Nullable is not a repeatable annotation type
    final @Nullable @Nullable List<Item> items;
                    ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListProjectsQuery.java:295: error: Nullable is not a repeatable annotation type
    public ListProjects(@Nonnull String __typename, @Nullable @Nullable List<Item> items,
                                                              ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListProjectsQuery.java:306: error: Nullable is not a repeatable annotation type
    public @Nullable @Nullable List<Item> items() {
                     ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchInvoicesQuery.java:304: error: Nullable is not a repeatable annotation type
    final @Nullable @Nullable List<Item> items;
                    ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchInvoicesQuery.java:316: error: Nullable is not a repeatable annotation type
    public SearchInvoices(@Nonnull String __typename, @Nullable @Nullable List<Item> items,
                                                                ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchInvoicesQuery.java:328: error: Nullable is not a repeatable annotation type
    public @Nullable @Nullable List<Item> items() {
                     ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListUsersQuery.java:295: error: Nullable is not a repeatable annotation type
    final @Nullable @Nullable List<Item> items;
                    ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListUsersQuery.java:309: error: Nullable is not a repeatable annotation type
    public ListUsers(@Nonnull String __typename, @Nullable @Nullable List<Item> items,
                                                           ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListUsersQuery.java:322: error: Nullable is not a repeatable annotation type
    public @Nullable @Nullable List<Item> items() {
                     ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchDrumsQuery.java:309: error: Nullable is not a repeatable annotation type
    final @Nullable @Nullable List<Item> items;
                    ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchDrumsQuery.java:321: error: Nullable is not a repeatable annotation type
    public SearchDrums(@Nonnull String __typename, @Nullable @Nullable List<Item> items,
                                                             ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchDrumsQuery.java:333: error: Nullable is not a repeatable annotation type
    public @Nullable @Nullable List<Item> items() {
                     ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListCustomersQuery.java:288: error: Nullable is not a repeatable annotation type
    final @Nullable @Nullable List<Item> items;
                    ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListCustomersQuery.java:298: error: Nullable is not a repeatable annotation type
    public ListCustomers(@Nonnull String __typename, @Nullable @Nullable List<Item> items,
                                                               ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListCustomersQuery.java:309: error: Nullable is not a repeatable annotation type
    public @Nullable @Nullable List<Item> items() {
                     ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchProjectItemsQuery.java:326: error: Nullable is not a repeatable annotation type
    final @Nullable @Nullable List<Item> items;
                    ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchProjectItemsQuery.java:338: error: Nullable is not a repeatable annotation type
    public SearchProjectItems(@Nonnull String __typename, @Nullable @Nullable List<Item> items,
                                                                    ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchProjectItemsQuery.java:350: error: Nullable is not a repeatable annotation type
    public @Nullable @Nullable List<Item> items() {
                     ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ProjectByOrganisationQuery.java:350: error: Nullable is not a repeatable annotation type
    final @Nullable @Nullable List<Item> items;
                    ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ProjectByOrganisationQuery.java:360: error: Nullable is not a repeatable annotation type
    public ProjectByOrganisation(@Nonnull String __typename, @Nullable @Nullable List<Item> items,
                                                                       ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ProjectByOrganisationQuery.java:371: error: Nullable is not a repeatable annotation type
    public @Nullable @Nullable List<Item> items() {
                     ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ProjectItemByProjectQuery.java:366: error: Nullable is not a repeatable annotation type
    final @Nullable @Nullable List<Item> items;
                    ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ProjectItemByProjectQuery.java:376: error: Nullable is not a repeatable annotation type
    public ProjectItemByProject(@Nonnull String __typename, @Nullable @Nullable List<Item> items,
                                                                      ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ProjectItemByProjectQuery.java:387: error: Nullable is not a repeatable annotation type
    public @Nullable @Nullable List<Item> items() {
                     ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/UserByOrganisationQuery.java:359: error: Nullable is not a repeatable annotation type
    final @Nullable @Nullable List<Item> items;
                    ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/UserByOrganisationQuery.java:373: error: Nullable is not a repeatable annotation type
    public UserByOrganisation(@Nonnull String __typename, @Nullable @Nullable List<Item> items,
                                                                    ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/UserByOrganisationQuery.java:386: error: Nullable is not a repeatable annotation type
    public @Nullable @Nullable List<Item> items() {
                     ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListPurchasesQuery.java:283: error: Nullable is not a repeatable annotation type
    final @Nullable @Nullable List<Item> items;
                    ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListPurchasesQuery.java:293: error: Nullable is not a repeatable annotation type
    public ListPurchases(@Nonnull String __typename, @Nullable @Nullable List<Item> items,
                                                               ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListPurchasesQuery.java:304: error: Nullable is not a repeatable annotation type
    public @Nullable @Nullable List<Item> items() {
                     ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/CustomerByOrganisationQuery.java:353: error: Nullable is not a repeatable annotation type
    final @Nullable @Nullable List<Item> items;
                    ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/CustomerByOrganisationQuery.java:363: error: Nullable is not a repeatable annotation type
    public CustomerByOrganisation(@Nonnull String __typename, @Nullable @Nullable List<Item> items,
                                                                        ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/CustomerByOrganisationQuery.java:374: error: Nullable is not a repeatable annotation type
    public @Nullable @Nullable List<Item> items() {
                     ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchUsersQuery.java:314: error: Nullable is not a repeatable annotation type
    final @Nullable @Nullable List<Item> items;
                    ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchUsersQuery.java:326: error: Nullable is not a repeatable annotation type
    public SearchUsers(@Nonnull String __typename, @Nullable @Nullable List<Item> items,
                                                             ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchUsersQuery.java:338: error: Nullable is not a repeatable annotation type
    public @Nullable @Nullable List<Item> items() {
                     ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListDrumsQuery.java:286: error: Nullable is not a repeatable annotation type
    final @Nullable @Nullable List<Item> items;
                    ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListDrumsQuery.java:296: error: Nullable is not a repeatable annotation type
    public ListDrums(@Nonnull String __typename, @Nullable @Nullable List<Item> items,
                                                           ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListDrumsQuery.java:307: error: Nullable is not a repeatable annotation type
    public @Nullable @Nullable List<Item> items() {
                     ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListOrganisationsQuery.java:291: error: Nullable is not a repeatable annotation type
    final @Nullable @Nullable List<Item> items;
                    ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListOrganisationsQuery.java:301: error: Nullable is not a repeatable annotation type
    public ListOrganisations(@Nonnull String __typename, @Nullable @Nullable List<Item> items,
                                                                   ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListOrganisationsQuery.java:312: error: Nullable is not a repeatable annotation type
    public @Nullable @Nullable List<Item> items() {
                     ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListInvoicesQuery.java:279: error: Nullable is not a repeatable annotation type
    final @Nullable @Nullable List<Item> items;
                    ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListInvoicesQuery.java:289: error: Nullable is not a repeatable annotation type
    public ListInvoices(@Nonnull String __typename, @Nullable @Nullable List<Item> items,
                                                              ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListInvoicesQuery.java:300: error: Nullable is not a repeatable annotation type
    public @Nullable @Nullable List<Item> items() {
                     ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchProjectsQuery.java:310: error: Nullable is not a repeatable annotation type
    final @Nullable @Nullable List<Item> items;
                    ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchProjectsQuery.java:322: error: Nullable is not a repeatable annotation type
    public SearchProjects(@Nonnull String __typename, @Nullable @Nullable List<Item> items,
                                                                ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchProjectsQuery.java:334: error: Nullable is not a repeatable annotation type
    public @Nullable @Nullable List<Item> items() {
                     ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchPurchasesQuery.java:308: error: Nullable is not a repeatable annotation type
    final @Nullable @Nullable List<Item> items;
                    ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchPurchasesQuery.java:320: error: Nullable is not a repeatable annotation type
    public SearchPurchases(@Nonnull String __typename, @Nullable @Nullable List<Item> items,
                                                                 ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchPurchasesQuery.java:332: error: Nullable is not a repeatable annotation type
    public @Nullable @Nullable List<Item> items() {
                     ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/DeviceByOrganisationQuery.java:355: error: Nullable is not a repeatable annotation type
    final @Nullable @Nullable List<Item> items;
                    ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/DeviceByOrganisationQuery.java:365: error: Nullable is not a repeatable annotation type
    public DeviceByOrganisation(@Nonnull String __typename, @Nullable @Nullable List<Item> items,
                                                                      ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/DeviceByOrganisationQuery.java:376: error: Nullable is not a repeatable annotation type
    public @Nullable @Nullable List<Item> items() {
                     ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/InvoiceByOrganisationQuery.java:344: error: Nullable is not a repeatable annotation type
    final @Nullable @Nullable List<Item> items;
                    ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/InvoiceByOrganisationQuery.java:354: error: Nullable is not a repeatable annotation type
    public InvoiceByOrganisation(@Nonnull String __typename, @Nullable @Nullable List<Item> items,
                                                                       ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/InvoiceByOrganisationQuery.java:365: error: Nullable is not a repeatable annotation type
    public @Nullable @Nullable List<Item> items() {
                     ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchOrganisationsQuery.java:316: error: Nullable is not a repeatable annotation type
    final @Nullable @Nullable List<Item> items;
                    ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchOrganisationsQuery.java:328: error: Nullable is not a repeatable annotation type
    public SearchOrganisations(@Nonnull String __typename, @Nullable @Nullable List<Item> items,
                                                                     ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchOrganisationsQuery.java:340: error: Nullable is not a repeatable annotation type
    public @Nullable @Nullable List<Item> items() {
                     ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchDevicesQuery.java:315: error: Nullable is not a repeatable annotation type
    final @Nullable @Nullable List<Item> items;
                    ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchDevicesQuery.java:327: error: Nullable is not a repeatable annotation type
    public SearchDevices(@Nonnull String __typename, @Nullable @Nullable List<Item> items,
                                                               ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchDevicesQuery.java:339: error: Nullable is not a repeatable annotation type
    public @Nullable @Nullable List<Item> items() {
                     ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListTenantsQuery.java:278: error: Nullable is not a repeatable annotation type
    final @Nullable @Nullable List<Item> items;
                    ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListTenantsQuery.java:288: error: Nullable is not a repeatable annotation type
    public ListTenants(@Nonnull String __typename, @Nullable @Nullable List<Item> items,
                                                             ^
/Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListTenantsQuery.java:299: error: Nullable is not a repeatable annotation type
    public @Nullable @Nullable List<Item> items() {
                     ^
84 errors

> Task :app:compileDebugJavaWithJavac FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:compileDebugJavaWithJavac'.
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.accept(ExecuteActionsTaskExecuter.java:166)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.accept(ExecuteActionsTaskExecuter.java:163)
	at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:191)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:156)
	at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:62)
	at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:108)
	at org.gradle.api.internal.tasks.execution.ResolveBeforeExecutionOutputsTaskExecuter.execute(ResolveBeforeExecutionOutputsTaskExecuter.java:67)
	at org.gradle.api.internal.tasks.execution.ResolveAfterPreviousExecutionStateTaskExecuter.execute(ResolveAfterPreviousExecutionStateTaskExecuter.java:46)
	at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:94)
	at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
	at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:95)
	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
	at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
	at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:43)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:355)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:343)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:336)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:322)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:134)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:129)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:202)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:193)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
Caused by: org.gradle.api.internal.tasks.compile.CompilationFailedException: Compilation failed; see the compiler error output for details.
	at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:56)
	at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:39)
	at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.delegateAndHandleErrors(NormalizingJavaCompiler.java:100)
	at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:52)
	at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:38)
	at org.gradle.api.internal.tasks.compile.AnnotationProcessorDiscoveringCompiler.execute(AnnotationProcessorDiscoveringCompiler.java:51)
	at org.gradle.api.internal.tasks.compile.AnnotationProcessorDiscoveringCompiler.execute(AnnotationProcessorDiscoveringCompiler.java:37)
	at org.gradle.api.internal.tasks.compile.CleaningJavaCompilerSupport.execute(CleaningJavaCompilerSupport.java:39)
	at org.gradle.api.internal.tasks.compile.incremental.IncrementalCompilerFactory$2.execute(IncrementalCompilerFactory.java:101)
	at org.gradle.api.internal.tasks.compile.incremental.IncrementalCompilerFactory$2.execute(IncrementalCompilerFactory.java:97)
	at org.gradle.api.internal.tasks.compile.incremental.IncrementalResultStoringCompiler.execute(IncrementalResultStoringCompiler.java:60)
	at org.gradle.api.internal.tasks.compile.incremental.IncrementalResultStoringCompiler.execute(IncrementalResultStoringCompiler.java:44)
	at org.gradle.api.internal.tasks.compile.CompileJavaBuildOperationReportingCompiler$2.call(CompileJavaBuildOperationReportingCompiler.java:59)
	at org.gradle.api.internal.tasks.compile.CompileJavaBuildOperationReportingCompiler$2.call(CompileJavaBuildOperationReportingCompiler.java:51)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
	at org.gradle.api.internal.tasks.compile.CompileJavaBuildOperationReportingCompiler.execute(CompileJavaBuildOperationReportingCompiler.java:51)
	at org.gradle.api.tasks.compile.JavaCompile.performCompilation(JavaCompile.java:158)
	at org.gradle.api.tasks.compile.JavaCompile.compile(JavaCompile.java:126)
	at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:103)
	at org.gradle.api.internal.project.taskfactory.IncrementalTaskInputsTaskAction.doExecute(IncrementalTaskInputsTaskAction.java:47)
	at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:42)
	at org.gradle.api.internal.project.taskfactory.AbstractIncrementalTaskAction.execute(AbstractIncrementalTaskAction.java:25)
	at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:28)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$5.run(ExecuteActionsTaskExecuter.java:476)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:461)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:444)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$200(ExecuteActionsTaskExecuter.java:93)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:237)
	at org.gradle.internal.execution.steps.ExecuteStep.lambda$execute$0(ExecuteStep.java:32)
	at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:32)
	at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:26)
	at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:58)
	at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:35)
	at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:48)
	at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:33)
	at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:39)
	at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:73)
	at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:54)
	at org.gradle.internal.execution.steps.CatchExceptionStep.execute(CatchExceptionStep.java:35)
	at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51)
	at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:45)
	at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:31)
	at org.gradle.internal.execution.steps.CacheStep.executeWithoutCache(CacheStep.java:208)
	at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:70)
	at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:45)
	at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:49)
	at org.gradle.internal.execution.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:43)
	at org.gradle.internal.execution.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:32)
	at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:38)
	at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:24)
	at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:96)
	at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:89)
	at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:54)
	at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:38)
	at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:76)
	at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:37)
	at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:36)
	at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:26)
	at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:90)
	at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:48)
	at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:69)
	at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:47)
	at org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:33)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:140)
	... 34 more

* Get more help at https://help.gradle.org

Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/5.6.4/userguide/command_line_interface.html#sec:command_line_warnings

BUILD FAILED in 1m 15s

Additional information
I would've just transferred the issue but it's in the awslabs GH organization, so a transfer wasn't possible.

As mentioned in the issue body, that is the same issue, we have decided that it is a Codegen issue and not an AppSync SDK issue because the issue is a duplicated decorator within the generated code.

Despite appearing to be Amplify codegen at first, the issue is actually AppSync SDK codegen.  Closing.

repo: aws-amplify/amplify-codegen


text:
Third Party Domain Verified, but Timesout ERR_CONNECTION_REFUSED When Visiting

App Id: d20hiszf5421db
Region: us-east-2
Step: Complete
Status: Verified but timesout
Issue/question
I have successfully validated my domain which is hosted on Siteground. I only added a subdomain, as the primary domain points to a website hosted elsewhere. I did this entirely through the Amplify console, I did not create a hosted zone on Route 53 and did not do anything with CloudFront.
However when typing in the url, it just timesout, it doesn't load my site. I get:
This site can’t be reached.
www.portal.example.com refused to connect.
ERR_CONNECTION_REFUSED
For example, my primary domain is example.com and I've only added the subdomain: portal.example.com.
I have tried deleted the linked domain, and starting over. It validated again, but still timesout. It has been >24 hours since validating the domain.

Found my answer here: https://stackoverflow.com/questions/59240000/aws-amplify-subdomain-redirect-to-www-admin-mydomain-com-showing-err-connectio
I had to go to App Settings, at the bottom, Rewrites and Redirects, and remove the redirect from portal.example.com to www.portal.example.com

repo: aws-amplify/amplify-console


text:
When github "deny access" to AWS Amplify app and then "garant access" again - no longer possible to clone repo

Before opening, please confirm:

[X] I have checked to see if my question is addressed in the FAQ.
[X] I have searched for duplicate or closed issues.
[X] I have read the guide for submitting bug reports.
[X] I have done my best to include a minimal, self-contained set of instructions for consistently reproducing the issue.

App Id
arn:aws:amplify:eu-west-2:694647969796:apps/dg1s64s7fmyba
Region
eu-west-2
Amplify Console feature
Build settings
Describe the bug
Given I granted permission to access Github to AWS amplify app
When  the permission was Denied on Github setting
And the permission was Granted  back again
Then I no longer can pull the repo during build
One more time with screenshots:
I deny access:

I Grant access

The build  fails due to lack of access to the github repository
2021-05-12T15:27:59.086Z [INFO]: Permission denied (publickey).
2021-05-12T15:27:59.087Z [INFO]: fatal: Could not read from remote repository.
                                 Please make sure you have the correct access rights
                                 and the repository exists.

Even If I Re-connect  AWS Amplify app with the button in General settings

...same error happens
Expected behavior
build should be able to clone the repo when AWS Amplify is connected to the Repo
Reproduction steps

create AWS Amplify APP
connect it to Github of an organization Repo
go to Github's setting for the repo organization > Third-party access and Denny Access to the AWS Amplify Application
now change back to Garant Access
trigger AWS Amplify build (e.g. redeploy current build)

Build Settings
this happens with any fresh application

Additional information

Related to issue https://github.com/aws-amplify/amplify-console/issues/157#issuecomment-834362708
possible solution https://github.com/aws-amplify/amplify-console/issues/1815

ok on further investigation this make sense why this happens. When I authorize AWS amplify App to access  repository a "deployment key" is added to project

that means if I de-authorized the AWS Amplify app from Github all the deployment keys are removed from all Repositories => no longer access
question is why will not AWS Amplify insert new deployment key to Github if i click "reconnect repository" in the AWS amplify General settings. If this is fixed then all should be good

closing this bug in favor of https://github.com/aws-amplify/amplify-console/issues/1837  as I'm pretty sure #1837 will also resolve this issue


text:
API key not found

Before opening, please confirm:

[X] I have checked to see if my question is addressed in the FAQ.
[X] I have searched for duplicate or closed issues.
[X] I have read the guide for submitting questions.
[X] I have removed any sensitive information from my code snippets and submission.

App Id
https://us-east-1.console.aws.amazon.com/amplify/home?region=us-east-1#/d3sst100jc4y17
AWS Region
us-east-1
Amplify Hosting feature
Frontend builds
Question
When i run amplify push i got error - "Reason: API key not found: .....my key"
in AWS AppSync newer key.
How i can update aws_appsync_apiKey in amplify

Hi @Ruslan310 👋 , thanks for raising this!
To better assist you, I am going to transfer this issue over to the amplify-category-api repository.

repo: aws-amplify/amplify-hosting


text:
Unable to delete Amplify backend environment

** Please describe which feature you have a question about? **
Deleting unused backend environment
** Provide additional details**
I'm trying to remove a deprecated amplify backend environment, but I am getting a "The specified bucket does not exist." error whenever I try to use amplify pull to pull the environment so I can delete it. I don't have any resources related to this environment (all deleted) but it doesn't seem like I can delete the environment itself. What's the best way to get around this?

Can you share your appId/region?
Are you able to delete the baackend environment through the console?:

Sure. App ID is d25h3g71gr2w1w region is us-west-2 . So I was able to delete the environment using the solution outlined here but I am now trying to reprovision an environment with the same name (start new) but the deleted environment (prod) is still showing up as an existing environment when trying to link a branch:

Where do the options from this dropdown come from?

Looking at the network requests it appears that they should be coming from a request to https://us-west-2.console.aws.amazon.com/amplify/api/amplify with an operation value of listBackendEnvironemnts. The response from this request is correct and only contains the two backend environments that still exist (dev and master). Perhaps this is some sort of caching bug? @ganipcanot

I got the same issue:

I've created a BE for testing, but can't delete it via UI

Having the same issue, and there is no useful error message at all.
The backend environment in question was automatically created by a PR Review. The PR was closed and deleted and now the backend is stuff and won't go away.

Having the same issue, and there is no useful error message at all.
The backend environment in question was automatically created by a PR Review. The PR was closed and deleted and now the backend is stuff and won't go away.

I am also facing the same issue on Amplify Console. I am not able to delete the whole app or the backend environment on the following configuration:-

Region: us-east-1
App ID: dpjxh4jhr63k2

I have the same problem.
Is there any progress?

I have the same problem.
Is there any progress?

Have you tried the suggestion here: https://github.com/aws-amplify/amplify-console/issues/1330
Specifically: aws amplify delete-backend-environment --app-id <YOUR_APP_ID> --environment-name <THE_BACKEND_ENVIRONMENT_NAME>

@ganipcanot - this fixes it for me, but the AWS console should also do this

@apiel51 @marlonmarcello @sharmaaditya570191 @gilvaju @cnbrkkaya @PabloLION
Could any of you please confirm if you attempted to delete the backends via CloudFormation first before attempting a delete via the AWS Console? Also, have you tried the workaround suggested here: #1330 (comment) and did that resolve your issue?
We are currently unable to reproduce the issue correctly. I would really appreciate if any of you could provide detailed reproduction steps, so I can investigate this properly.

@Narrator - yes, this is what happened to mine. Using the aws cli seems to fix it.

Having the same problem for almost 2 months,  so annoying.

Having the same problem for almost 2 months, there is no trace left of any resource that backs the Amplify projects anymore, no CloudFormation, no nothing, how it is possible that no one can fix this... so annoying.

Same

no progress? same problem here!

Have you tried the suggestion here: #1330 (comment)
Specifically: aws amplify delete-backend-environment --app-id <YOUR_APP_ID> --environment-name <THE_BACKEND_ENVIRONMENT_NAME>

Thanks Ganipcanot, you're a true hero.

This is what worked for me.

open AWS CloudShell and run cmd: aws amplify delete-app --app-id <your_app-id>
you can find amplify app id at amplify app detail

Credit due:
https://stackoverflow.com/a/70894285/11705601

We have since fixed this issue. Resolving.

authors: FeliceGeracitano Narrator Pablion ZachMurray apiel51 cnbrkkaya danielqba ganipcanot marlonmarcello michaelbrewer ocbrollingpaper sharmaaditya570191 smoothness swaminator


text:
Remove "Docs" link from mix.exs

Hex.pm already automatically adds an "Online documentation" link.

:green_heart: :blue_heart: :purple_heart: :yellow_heart: :heart:

source: gharchive/pull-request

authors: josevalim wojtekmach

repo: aws-beam/aws-elixir


text:
Add metadata flags for drift

Issue #, if available:
Description of changes: Add new metadata flags for Uluru schemas to make the schema more verbose for drift.
Test:

build the package
added unit test for new metadata flags

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Something unclear about these: are these specifically about ReadHandlers? For example, AWS::ImageBuilder::Component.Platform must be input with the casing Linux, but the ReadHandler returns LINUX for that value currently. Is this property case sensitive or case insensitive?

Something unclear about these: are these specifically about ReadHandlers? For example, currently AWS::ImageBuilder::Component.Platform must be input with the casing Linux, but the ReadHandler returns LINUX for that value. Is that property case sensitive or case insensitive? Should we consider an enum instead of a boolean?

According to the above implementation if the team does not care wether the value is Linux/LINUX they case set this to the caseInsensitive flag to true. Enum is probably a good route if the property have finite set of values. In case, the property is accepting any values use the case sensitive flag is good route.
Another thing, in the above case we just need to be careful we don't break the existing stacks. If the customer was providing Linux/LINUX as input going forward both should be acceptable

I have been thinking about these changes a bit, and I have a few questions/concerns:

Some properties can be updated by the downstream service teams and these properties could have a prefix/postfix or both once returned from the Read Handler

I have no idea what this means in practice. From the perspective of a third-party resource provider, there is no such thing as a "downstream service team".

If I'm writing a resource for our own products, there are no "service teams"
If I'm writing a resource to plug a gap in coverage for AWS resources, the only thing I get to interact with is an API.

I also have concerns that relate a bit to the remark by @jotompki

are we planning on handling this sort of prefix additions handler side? if so would have to do for every language plugin

Mainly that I would expect that the output of the ReadHandler would always be a valid input for each property (assuming they're not readOnly).
The ignore case and null is empty list should fit that expectation. The suffix and prefix maybe do not.

If I add this to a property that I can also !GetAtt or !Ref, will the output shown in the drift detection be meaningfully different than what I would see in an output? Having any difference between those sounds like something that might lead to problems. The difference changing the actual string even more so.
A particular future problem would be a feature that automates the import of existing resources. If there is meta-data present, should it remove the suffix/prefix before generating a template? Depending on the schema, this might even break the contract [see below]
If the underlying API changes, I would expect the handler to deal with that, the way I read the suffix/prefix (and I might be reading it wrong, see my first point), that responsibility is instead pushed to the caller.

from https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-test-contract.html#resource-type-test-contract-read

A read handler MUST return a model representation that conforms to the shape of the resource schema

If you specify a regex or similar for a property, the returned model might not fit in the shape

these properties could have a prefix/postfix or both once returned from the Read Handler

I have no idea what this means in practice

@ikben AWS::Route53::HostedZone.Name is a good example (. suffix):

these properties could have a prefix/postfix or both once returned from the Read Handler

I have no idea what this means in practice

@ikben AWS::Route53::HostedZone.Name is a good example (optional . suffix):

Are there any other use cases other than this ? This could set a precedent of adding in metadata to the schema for one-off drift integration issues.

Are there any other use cases other than this ? This could set a precedent of adding in metadata to the schema for one-off drift integration issues.

I do worry if this problem is restricted to only prefixes and suffixes too. For example, many times . don't matter in the first half of email addresses, so this problem doesn't seem strictly limited to prefixes and suffixes

these properties could have a prefix/postfix or both once returned from the Read Handler

I have no idea what this means in practice

@ikben AWS::Route53::HostedZone.Name is a good example (optional . suffix):

Are there any other use cases other than this ? This could set a precedent of adding in metadata to the schema for one-off drift integration issues.

IAM Policy document has values which expect an account Id but return Arn.

IAM Policy document has values which expect an account Id but return Arn.

Can these optional prefixes/suffixes be patterns instead of literal strings? This doesn't seem solvable by literal string prefixes/suffixes since ARNs differ per partition

AWS::Route53::HostedZone.Name is a good example (optional . suffix):

That is a good example as the behavior is well defined by the API. If this is the kind of use case, I think it would make sense to define it in the readme as strings that are 100% equivalent.

IAM Policy document has values which expect an account Id but return Arn.

That sounds to me like a bug in the resource provider as it breaks the contract (AWS::IAM::Policy defines a regex that wouldn't match an ARN for eg. Groups)
For cases where it wouldn't break the contract (eg. the Property can be either a name or an ARN), you would have to be careful about how you do the conversion, as the conversion isn't necessarily symmetric (if you remove arn:aws:$service:.*:.*:thing/ from every input, things from different regions will collapse down to the same name)

To address the drift issues, there are different layers of solution. This is one of the solutions that to provide schema level metadata to address majority of drift issues without writing code.    I agree with the opinion https://github.com/aws-cloudformation/aws-cloudformation-resource-schema/pull/103#issuecomment-709625526 that the metadata name is confusing. Customer may think whether the property name is caseSensitive or not, and wont think it's for drift feature.   Something I like is following:
drift-override : {
 "caseSensitive": false,
 "nullEqualsEmpty": true
 }

Other layer of solution is providing more flexible and dynamic solution so that resource handler can make decision.
As for Andrew's comment that "I think the real solution for drift is to take a baseline of the live state at the end of an operation and use that to compare against instead of the template."https://github.com/aws-cloudformation/aws-cloudformation-resource-schema/pull/103#pullrequestreview-510740117.   My main concern to this approach is that the live state of last operation is different from the CFN template. It will bring customer UX issue to map yet another model with CFN template to figure out what is changed or not.

Closing this pull request. This is not a scalable mechanism to support this feature.

authors: PatMyron anshikg ikben jotompki wbingli


text:
cfn-lint 0.29.0 installed via homebrew unable to find networkx distribution.

cfn-lint version: (cfn-lint --version)
0.29.0 (via Homebrew)
Description of issue.
After updating cfn-lint via homebrew, I now get the following error, even when trying to run the command to get the version (cfn-lint --version).
Traceback (most recent call last):
  File "/usr/local/bin/cfn-lint", line 6, in <module>
    from pkg_resources import load_entry_point
  File "/usr/local/Cellar/cfn-lint/0.29.0/libexec/lib/python3.8/site-packages/pkg_resources/__init__.py", line 3255, in <module>
    def _initialize_master_working_set():
  File "/usr/local/Cellar/cfn-lint/0.29.0/libexec/lib/python3.8/site-packages/pkg_resources/__init__.py", line 3238, in _call_aside
    f(*args, **kwargs)
  File "/usr/local/Cellar/cfn-lint/0.29.0/libexec/lib/python3.8/site-packages/pkg_resources/__init__.py", line 3267, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "/usr/local/Cellar/cfn-lint/0.29.0/libexec/lib/python3.8/site-packages/pkg_resources/__init__.py", line 584, in _build_master
    ws.require(__requires__)
  File "/usr/local/Cellar/cfn-lint/0.29.0/libexec/lib/python3.8/site-packages/pkg_resources/__init__.py", line 901, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/usr/local/Cellar/cfn-lint/0.29.0/libexec/lib/python3.8/site-packages/pkg_resources/__init__.py", line 787, in resolve
    raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'networkx~=2.4' distribution was not found and is required by cfn-lint

Taking a look on this now. Thanks for the report.

Submitted a patch PR, waiting for the CI to merge it.

Just released the fix, let me know if it works on your end now.
cc @rzyns

I updated via brew, and all seems to be working. Thanks for the quick fix, @chenrui333.

np!!

repo: aws-cloudformation/cfn-python-lint


text:
Add security flags to go build step

Is your feature request related to a problem?
The way the controller binary is compiled could include security flags.
Describe the solution you'd like
For example, we could include the -buildmode=pie flag to go build to get ASLR, improving security of the binary with minimal effort, the only cost being a small increase in final image size.
Some more info on this flag can be found in this blogpost
Others might have other suggestions or similar "quick wins"?
Happy to contribute if there's any interest
Output from gdb on current controller:
# gdb -batch -ex "checksec ./controller"
GEF for linux ready, type `gef' to start, `gef config' to configure
96 commands loaded for GDB 10.1.90.20210103-git using Python engine 3.9
[+] checksec for '/test/controller'
Canary                        : ✘
NX                            : ✓
PIE                           : ✘
Fortify                       : ✘
RelRO                         : ✘

Edit:  Looks like it adversely affected memory usage in kubernetes when they implemented this, so worth keeping that in mind.
Describe alternatives you've considered
A description of any alternative solutions or features you've considered.

This does seem like an easy win. Our controllers have a fairly small memory overhead, so hopefully the Kubernetes issue doesn't surface for us. Interested to see the binary size increase, too.

Thanks @RedbackThomson ! I'll have a go and get some side-by-side comparisons.

@RedbackThomson not a trivial difference TBF:
As is:

aws-controllers-k8s     s3-v0.0.7-5-g3e6743f-dirty   3278a5d3a608   About a minute ago   63.8MB

with Pie flag:
aws-controllers-k8s     s3-v0.0.7-5-g3e6743f-dirty   bc58dcce3bff   6 seconds ago   74.5MB

What do you reckon? Probably worth evaluating performance also?

That does seem fairly substantial. But to be fair it was only a 64MB binary to begin with. Thoughts @jaypipes @vijtrip2 @A-Hilaly ?

I believe if we can improve security posture of controller, which will allow more customers to adopt the controllers and run in their production cluster, we should go for it.
For the above specific case, I believe ~10MB increase in size will not be a bad trade-off. We should do it : )
and Thanks @philnichol for always raising our security standards. We will try to take this knowledge and implement in other projects as well. Appreciate it!

Reading the associated blog post now... from first glance, seems like 10MB image size is a perfectly acceptable trade-off. Will finalize decision after reading the article fully and we'll chat about this at today's ACK community meeting.

Reading the associated blog post now... from first glance, seems like 10MB image size is a perfectly acceptable trade-off. Will finalize decision after reading the article fully and we'll chat about this at today's ACK community meeting.

OK, after fully reading the article, seems like yes, PIE is an easy win and with an acceptable increase in binary size. We could also look into using CGO but then we'd open up the door to attacks with modified dynamically-loaded libs.

yeah, the CGO stuff seemed way less trivial, and potentially could bring in other security issues?

Not needed:
https://github.com/aws-controllers-k8s/code-generator/pull/273#issuecomment-1021149860

authors: RedbackThomson jaypipes philnichol vijtrip2


text:
Bug: Progress messages aren't being captured by the adaptor

Expected Behaviour
The adaptor captures and reports Job progress back up toe Deadline Cloud.
Current Behaviour
Houdini progress messages are not being captured so no progress information is communicated back to Deadline Cloud
Reproduction Steps
Submit any Houdini Job
Code Snippet

I believe this should actually be moved to the openjd-adaptor-runtime-for-python repo since I believe the openjd messages are actually being prefixed with STDOUT, so they're not being captured by the worker agent.

I believe this should actually be moved to the openjd-adaptor-runtime-for-python repo since I believe the openjd messages from daemons are being sent to devnull. I believe the standard run command would work. Filing ticket there instead.

This will be addressed by https://github.com/OpenJobDescription/openjd-adaptor-runtime-for-python/issues/109

authors: epmog justinsaws

repo: aws-deadline/deadline-cloud-for-houdini


text:
chore: 🤖 clean up build scripts to run in parallel

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

I am unsure why random integ tests are failing (pass on local)

repo: aws-observability/aws-rum-web


text:
[FEATURE] Add support for KCM and KSH metrics

Is your feature request related to a problem? Please describe.
Yes, it'd be ideal to understand the scheduling latencies in the cluster, scheduler retries, and other controllers related metrics.
Describe the solution you'd like
Scrape the ksh and kcm metrics and show in observability platform
Describe alternatives you've considered
N/A
Additional context
N/A

Thankyou Ashok for the ticket. Looking forward for your PR with updated collector config. Please reachout for any questions or needing help.


text:
Release version 1.6.0

Summary

feat: Automatic Register XRay for all services
GA: Parameters

Why is this needed?
Release Parameters GA & adding two wrapper method in Tracing to auto instrument .NET SDK clients
Which area does this relate to?
Tracing, Parameters
Solution
No response
Acknowledgment

[X] This request meets Powertools for AWS Lambda (.NET) Tenets

Release 1.6.0 is completed.

repo: aws-powertools/powertools-lambda-dotnet


text:
Update neo4j.template.yaml

Issue #, if available:
Description of changes:
/do-e2e-tests
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

/do-e2e-tests


text:
Expire unused objects in S3

There are unused objects in the bucket that we can remove safely.

athena-query-results - This folder is storing Athena Query Results generated when we transform CSV files into Parquet files. We don't have a reason to keep these results more than one day.
partitioned-gz - This folder is storing raw gzip files generated by Cloudfront. We are storing this data in parquet so I can't find a reason to keep the raw data stored forever.

I would like to hear the opinion from other developers before opening a pull request.
CloudFrontAccessLogsBucket:
  Type: 'AWS::S3::Bucket'
  Properties:
    LifecycleConfiguration:
      Rules:
        - Id: ExpireAthenaQueryResults
          Prefix: athena-query-results/
          Status: Enabled
          ExpirationInDays: 1
        - Id: ExpirePartitionedGz
          Prefix: !Ref GzKeyPrefix
          Status: Enabled
          ExpirationInDays: 180
          Transitions:
            - TransitionInDays: 7
              StorageClass: GLACIER

Thanks for the suggestion, @wedneyyuri! Yes, the ExpireAthenaQueryResults rule makes sense to me. It's derived data anyways.
I don't know the other consumers & processes that customers have for the original files by Amazon CloudFront (partitioned-gz). I think this is better as a strong suggestion in the documentation and commented in the template. After all, the expiration time and best storage class is very use case specific - and there are 788 AWS Serverless Application Repository deployments out there.
Looking forward to your PR!

Thanks @steffeng, I sent a PR addressing the ExpireAthenaQueryResults. I'm not sure what's the better way to include a suggestion in the documentation, any suggestion is welcome.

Thanks, @wedneyyuri. I'll have to merge/ package it next week.

authors: steffeng wedneyyuri


text:
Cannot show the blue line

Hi, I tried to follow your instruction and cannot show the blue line

beside, is there any way to run on different region? For example, Tokyo...

Sanity check the metric by searching for it in the CloudWatch console and adding it to a chart. If you can't see any line / data in CloudWatch then your EC2 is not emitting data. If it looks ok in CloudWatch check the alarm is referencing the same instance Id and check the scale on the Y axis. You can run in any region as long as the metric, alarm and Lambda are in the same region.

Hi WisemanIV,
I checked that is the same instance Id, but I don't understand what's the meaning of scale on the Y axis, In my understanding of your code emailer.js, it uses this function getYMax(s) to return the datapoint of Y axis. Beside, I tried to run the lambda on Singapore region, it shows the region error, after I tried to add a environment variable AWS_REGION on lambda, it shows error.

Do you see the metric in the CloudWatch console? What does it look like when you add it to a graph in the console? Singapore region should be ok. What error are you getting? The region parameter is provided by Lambda based on the region the function is executing in, you don't need to add it as an environment variable.

Hi, please check

Hi, sorry the Simple Email Service (SES) has limited regional availability. See the service availability matrix for a list of regions where SES is available - https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/. I'll update the documentation to reflect this limitation. If you need to send emails from a region that is not supported by SES you will have to use a different email service.
As for why the line is not rendering, I'm guessing it is because your Lambda is in Virginia but your metric is in Singapore region. The Lambda will call the CloudWatch API in Virginia and the metric will not be found in that region. Check the Lambda logs for errors.

Hi, thanks your reply, may I give a little suggestion for this apps, is it possible to using this method to send email without concern region, for example

Create a IAM user, attached role to access SES function, and create a new accesskey for access SES
Create a credentials.js for to access SES and send email, like this

var aws = require('aws-sdk');
var ses = new aws.SES({apiVersion: '2010-12-01',
                        accessKeyId: '<accesskeyID>',
                        secretAccesskey: '<secretAccesskey>',
                        region: 'us-east-1' });
Hope can help you a bit.

I modified your code and it works for me

Thanks for this. I will test the solution and look to incorporate into the next version.

authors: lannyho wisemanIV


text:
Fix https://forums.aws.amazon.com/thread.jspa?threadID=322708

Issue #, if available: #38
Description of changes: Preserves grants on each rotation.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

@madsid - this would seem sensible. Do you mind reviewing and/ or merging?

Hi!
Thanks for looking into this issue.
We got this error when we tried to run your suggested solution.
I don't know enough about Postgres to evaluate how properly fix it, but just wanted to let you know.
ERROR:  role "username_clone" is a member of role "username"
SQL state: 0LP01

Ok, I dug a little deeper and found a possible solution.
So, in case the _clone user is active (and it potentially created object in the database) you could execute this command to reassign ownership of all of _clone's object to the normal user
REASSIGN OWNED BY username_clone TO username

We had to execute this statement as the _clone user (since it is the owner of the objects). I don't know why the master user was not allowed to execute that statement. We got this exception
ERROR:  permission denied to reassign objects
SQL state: 42501

I created another PR that could solve our problem. Would you mind checking out if this works for you? I haven't tested the whole solution yet (only executed the sql-statement on our rds instance).

We have addressed this issue with updating the documentation on when to use single or Multi User rotation strategy.

@goyalya, did you address the actual issue, which is that while using the multi user strategy the following can happen?

Initial user is created
Rotation occurs, second user is created and used
Privileges are granted to the second user by the application
Rotation occurs

Expected: Privileges are copied from the second user when rotating
Actual: Operations fail because any new privileges granted during after the creation of the second user are not copied during rotation.

Holy smokes this still isn't fixed? (says someone currently implementing multi-user rotation via the CDK at another site). Where's my reopen button?
Hello @thekevinbrown btw :)

@thekevinbrown :  The issue is in the miss-application of multi-user rotation. In the case of a fixed application, table creation and permissions should be managed by the application. That application needs to take into account muti-user rotation and if additional permissions are granted to the regular user, they need to be granted to the clone user in which case the application should manage the permissions.
In the case of add-hoc/interactive users, single user rotation should be used (this was the documentation change). These users do not need a high availability rotation strategy because sessions are not terminated during password rotation.

It seems like it'd be pretty easy to copy permissions when a rotation happens so that the application doesn't have to depend on the (undocumented as far as I know) pattern you use for the cloned username and understand the implementation details of multi-user rotation.
Is there a reason this isn't a good idea and it's better to make the application developer understand all of this?

The multi-user rotation strategy _clone user is documented. The developer is going to have to understand the rotation strategy choices based on their application needs and design. It may be enough for some applications to just use a connection pool manager with the Secrets Manager JDBC wrapper and the single user rotation strategy, or it may not be sufficient depending on the application.
This is one of many permission problems an application can introduce and trying to manage permission changes as part of rotation is taking the wrong path.

Ok, in our application when we grant permissions in migrations we grant them to both user and user_clone, so if that's the recommended approach, then I agree, we're done here.
Thanks for the info!

authors: FloWi followben goyalya joebaro thekevinbrown


text:
NewOrder Lambda failed to begin subsegment named 'dynamodb': segment cannot be found

Hi,
After deploying the cloud formation template.
Created a simple Step Functions:
{   "Comment": "re:Invent 2018 Builder Session - Managing Long Lived Transactions with AWS Step Functions State Machine",   "StartAt": "ProcessOrder",   "States": {     "ProcessOrder": {       "Comment": "First transaction to save the order and set the order status to new",       "Type": "Task",       "Resource": "arn:aws:lambda:us-east-1:ACCOUNTID:function:NextGenOrderManagt-NewOrderFunction-xxxx",       "TimeoutSeconds": 10,       "Catch": [{         "ErrorEquals": ["ErrProcessOrder"],         "ResultPath": "$.error",         "Next": "UpdateOrderStatusFailed"       }],             "Next": "UpdateOrderStatusSucceeded"     },         "UpdateOrderStatusFailed": {       "Type": "Fail"     },     "UpdateOrderStatusSucceeded": {       "Type": "Succeed"     }   } }
And it fails on the scenario 1:
{   "order_id": "1ae4501d-ed92-4b27-bf0e-fd978ed45127",   "order_date": "2018-10-19T10:50:16+08:00",   "customer_id": "8d04ea6f-c6b2-4422-8550-839a16f01feb",   "items": [{       "item_id": "987",       "qty": 1.0,       "description": "Cart item 1",       "unit_price": 19.99     },     {       "item_id": "546",       "qty": 1.0,       "description": "Cart item 2",       "unit_price": 23.98     },     {       "item_id": "3",       "qty": 2.0,       "description": "Cart item 3",       "unit_price": 6.50     }   ] }
with the error: failed to begin subsegment named 'dynamodb': segment cannot be found
Full stack:
{   "errorMessage": "failed to begin subsegment named 'dynamodb': segment cannot be found.",   "errorType": "string",   "stackTrace": [     {       "path": "github.com/aws/aws-lambda-go@v1.7.0/lambda/function.go",       "line": 27,       "label": "(*Function).Invoke.func1"     },     {       "path": "runtime/asm_amd64.s",       "line": 522,       "label": "call32"     },     {       "path": "runtime/panic.go",       "line": 513,       "label": "gopanic"     },     {       "path": "github.com/aws/aws-xray-sdk-go@v0.9.4/strategy/ctxmissing/default_context_missing.go",       "line": 47,       "label": "(*DefaultRuntimeErrorStrategy).ContextMissing"     },     {       "path": "github.com/aws/aws-xray-sdk-go@v0.9.4/xray/segment.go",       "line": 88,       "label": "BeginSubsegment"     },     {       "path": "github.com/aws/aws-xray-sdk-go@v0.9.4/xray/aws.go",       "line": 52,       "label": "glob..func1"     },     {       "path": "github.com/aws/aws-sdk-go@v1.15.81/aws/request/handlers.go",       "line": 213,       "label": "(*HandlerList).Run"     },     {       "path": "github.com/aws/aws-sdk-go@v1.15.81/aws/request/request.go",       "line": 361,       "label": "(*Request).Build"     },     {       "path": "github.com/aws/aws-sdk-go@v1.15.81/aws/request/request.go",       "line": 382,       "label": "(*Request).Sign"     },     {       "path": "github.com/aws/aws-sdk-go@v1.15.81/aws/request/request.go",       "line": 490,       "label": "(*Request).Send"     },     {       "path": "github.com/aws/aws-sdk-go@v1.15.81/service/dynamodb/api.go",       "line": 2936,       "label": "(*DynamoDB).PutItemWithContext"     },     {       "path": "new/main.go",       "line": 68,       "label": "saveOrder"     },     {       "path": "new/main.go",       "line": 45,       "label": "handler"     },     {       "path": "runtime/asm_amd64.s",       "line": 527,       "label": "call1024"     },     {       "path": "reflect/value.go",       "line": 447,       "label": "Value.call"     },     {       "path": "reflect/value.go",       "line": 308,       "label": "Value.Call"     },     {       "path": "github.com/aws/aws-lambda-go@v1.7.0/lambda/handler.go",       "line": 114,       "label": "NewHandler.func1"     },     {       "path": "github.com/aws/aws-lambda-go@v1.7.0/lambda/handler.go",       "line": 22,       "label": "lambdaHandler.Invoke"     },     {       "path": "github.com/aws/aws-lambda-go@v1.7.0/lambda/function.go",       "line": 59,       "label": "(*Function).Invoke"     },     {       "path": "runtime/asm_amd64.s",       "line": 523,       "label": "call64"     },     {       "path": "reflect/value.go",       "line": 447,       "label": "Value.call"     },     {       "path": "reflect/value.go",       "line": 308,       "label": "Value.Call"     },     {       "path": "net/rpc/server.go",       "line": 384,       "label": "(*service).call"     },     {       "path": "runtime/asm_amd64.s",       "line": 1333,       "label": "goexit"     }   ] }

Hello @BastLeblanc, sorry for the delay, I've just returned from leave. Let me look into this and get back to you asap. Thanks.

authors: BastLeblanc sliedig


text:
Squashfs volumes are not mountable thru enroot on HyperPod

In an attempt to improve performance, the user has copied the SquashFS image (which contains their dataset) onto FSx - and trying to mount the SquashFS image into the docker container with  --container-mounts.
However, enroot/pyxis could not access the mounted SquashFS files as enroot/pyxis does not support SquashFS mounts, it seems.

This is a known issue with enroot/pyxis described here:  https://github.com/NVIDIA/enroot/issues/180#issuecomment-1971965852
Some options are the following:
1/ Extract the dataset onto FSx, but this creates many small files which may not be optimal.
2/ Extract the dataset onto each worker node's local NVMe disk for better performance
3/ Use  squashfuse and autofs per https://github.com/NVIDIA/enroot/issues/180#issuecomment-1971965852

repo: aws-samples/awsome-distributed-training


text:
Parameters not working in @aws-sdk/client-redshift-data

The following command in a lambda function throws a ValidationError when sent to the client.
var _clientRedshiftData = require("@aws-sdk/client-redshift-data");

const client = new _clientRedshiftData.RedshiftDataClient({
  region: 'us-east-1'
});

const UPDATE_QUERY = "\
  UPDATE schema.user \
  SET \
    email = @email \
  WHERE id = @id;";

exports.handler = async (event, context) => {
  const results = await Promise.all(events.Records.map(async (record) => {
    const command = new _clientRedshiftData.ExecuteStatementCommand({
      ClusterIdentifier: 'cluster-test',
      Database: 'database',
      DbUser: 'user',
      Sql: UPDATE_QUERY,
      Parameters: [
        { name: "@id", value: 'sampleId' },
        { name: "@email", value: 'sample@gmail.com' },
      ]
    });
    return (await client.send(command));
  }
}

{
    "errorType": "ValidationException",
    "errorMessage": "ValidationException",
    "name": "ValidationException",
    "$fault": "client",
    "$metadata": {
        "httpStatusCode": 400,
        "requestId": "d866b77e-184c-4da9-b4cf-45bc7fd3d556",
        "attempts": 1,
        "totalRetryDelay": 0
    },
    "stack": [
        "ValidationException: ValidationException",
        "    at deserializeAws_json1_1ExecuteStatementCommandError (/opt/nodejs/node_modules/@aws-sdk/client-redshift-data/dist-cjs/protocols/Aws_json1_1.js:411:41)",
        "    at processTicksAndRejections (internal/process/task_queues.js:97:5)",
        "    at async /opt/nodejs/node_modules/@aws-sdk/middleware-serde/dist-cjs/deserializerMiddleware.js:6:20",
        "    at async /opt/nodejs/node_modules/@aws-sdk/middleware-signing/dist-cjs/middleware.js:11:20",
        "    at async StandardRetryStrategy.retry (/opt/nodejs/node_modules/@aws-sdk/middleware-retry/dist-cjs/StandardRetryStrategy.js:51:46)",
        "    at async /opt/nodejs/node_modules/@aws-sdk/middleware-logger/dist-cjs/loggerMiddleware.js:6:22",
        "    at async /var/task/index.js:156:13",
        "    at async Promise.all (index 0)",
        "    at async Runtime.exports.handler (/var/task/index.js:66:19)"
    ]
}

However, when I take out Parameters, the query works fine.

Hi @henrybzhang
Does this work?
Parameters: [
  { '@id': 'sampleId' },
  { '@email': 'sample@gmail.com' },
]

OR
  Parameters: [
    { 'name': '@id', 'value': 'sampleId' },
    { 'name': '@email', 'value' : 'sample@gmail.com' },
  ]

@henrybzhang
Single quotes are not supported in parameterization. Please reopen this ticket if the issue is not resolved.

authors: henrybzhang itsDZhang