Autosave: 2024-06-23 19:15:05

This commit is contained in:
thomasabishop 2024-06-23 19:15:05 +01:00
parent bcad37e625
commit 0831697099
7 changed files with 94 additions and 147 deletions

Binary file not shown.

View file

@ -1,72 +0,0 @@
---
id: l045
title: DynamoDB CLI commands
tags: [AWS, databases, dynamodb]
created: Saturday, June 22, 2024
---
# DynamoDB CLI commands
## Connecting to a local (Docker)/prod (AWS) DynamoDB instance
In order to distinguish between local and production accounts you should keep
seperate profiles for each (via `.aws/config` and `.aws/credentials`).
When connecting to a local DB use the local profile and the local URL. Without
the `--profile` flag, AWS will default to the `default` profile which will
typically be your credentials for accessing AWS on the remote.
It also sometimes required to add the endpoint-url when working locally:
```
--endpoint-url http://localhost:800
> When using the commans below locally, assume `--endpoint-url` and `--profile`
> have been appended
```
For example:
```sh
aws dynamodb list-tables \
--profile timetracking_dev \
--endpoint-url http://localhost:800
```
## Delete a table
```sh
aws dynamodb delete-table \
--table-name TableName
```
## Create table from JSON schema
```sh
aws dynamodb create-table \
--cli-input-json file://create-timeentries-table.json \
```
## Describe the table
View the table schema:
```sh
aws dynamodb describe-table \
--table-name TimeEntries
```
## Scan the table
```sh
aws dynamodb scan \
--table-name TimeEntries \
--output table
```
## Related notes

View file

@ -1,64 +0,0 @@
---
id: 8b6h
title: DynamoDB SDK commands
tags: [AWS, databases, dynamodb]
created: Sunday, June 23, 2024
---
# DynamoDB SDK commands
The following commands are for using `@aws-sdk/client-dynamodb` (the JS SDK).
## Create client
```js
import DynamoDBClient from "@aws-sdk/client-dynamodb";
const client = new DynamoDBClient({
region: "eu-west-2",
accessKeyId: process.env.ACCESS_KEY_ID,
secretAccessKey: process.env.ACCESS_KEY_ID,
});
```
### DynamoDB Document Client
The Document Client returns the data as a standard JSON document in the manner
of a document-based NoSQL database. Without it, DynamoDB will return the data
with type data which is unwieldy and hard to parse.
To transform into a document structure:
```js
import DynamoDBClient from "@aws-sdk/client-dynamodb";
import DynamoDBDocumentClient from "@aws-sdk/lib-dynamodb";
const client = new DynamoDBClient({
region: "eu-west-2",
accessKeyId: process.env.ACCESS_KEY_ID,
secretAccessKey: process.env.ACCESS_KEY_ID,
});
const dynamoDbDocumentClient = DynamoDBDocumentClient.from(client);
```
## Query a table
Querying is the most performant and cost-effective method since it is an O(1)
lookup against a partition key or secondary index.
```js
const params = {
TableName: "YourTableName",
KeyConditionExpression: "#pk = :pk",
ExpressionAttributeNames: { "#pk": "PrimaryKeyAttributeName" },
ExpressionAttributeValues: { ":pk": "PrimaryKeyValue" },
};
```
## Scan a table
Scanning is less performant (O(n)) and most expensive since it requires checking
every item in the database.
## Related notes

View file

@ -16,6 +16,16 @@ When connecting to a local DB use the local profile and the local URL. Without
the `--profile` flag, AWS will default to the `default` profile which will
typically be your credentials for accessing AWS on the remote.
It also sometimes required to add the endpoint-url when working locally:
```
--endpoint-url http://localhost:800
> When using the commans below locally, assume `--endpoint-url` and `--profile`
> have been appended
```
For example:
```sh
@ -28,8 +38,6 @@ aws dynamodb list-tables \
```sh
aws dynamodb delete-table \
--profile timetracking_dev \
--endpoint-url http://localhost:8000 \
--table-name TableName
```
@ -38,9 +46,25 @@ aws dynamodb delete-table \
```sh
aws dynamodb create-table \
--cli-input-json file://create-timeentries-table.json \
--profile timetracking_dev \
--endpoint-url http://localhost:8000
```
## Describe the table
View the table schema:
```sh
aws dynamodb describe-table \
--table-name TimeEntries
```
## Scan the table
```sh
aws dynamodb scan \
--table-name TimeEntries \
--output table
```
## Related notes

View file

@ -7,16 +7,75 @@ created: Sunday, June 23, 2024
# DynamoDB SDK commands
The following commands are for using `$aws-sdk/client-dynamodb` (the JS SDK).
The following commands are for using `@aws-sdk/client-dynamodb` (the JS SDK).
## Create client
```js
const params = {
import DynamoDBClient from "@aws-sdk/client-dynamodb";
const client = new DynamoDBClient({
region: "eu-west-2",
accessKeyId: process.env.ACCESS_KEY_ID,
secretAccessKey: process.env.ACCESS_KEY_ID,
});
```
### DynamoDB Document Client
The Document Client returns the data as a standard JSON document in the manner
of a document-based NoSQL database. Without it, DynamoDB will return the data
with type data which is unwieldy and hard to parse.
To transform into a document structure:
```js
import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
import { DynamoDBDocumentClient } from "@aws-sdk/lib-dynamodb";
const client = new DynamoDBClient({
region: "eu-west-2",
accessKeyId: process.env.ACCESS_KEY_ID,
secretAccessKey: process.env.ACCESS_KEY_ID,
});
const dynamoDbDocumentClient = DynamoDBDocumentClient.from(client);
```
## Query a table
Querying is the most performant and cost-effective method since it is an O(1)
lookup against a partition key or secondary index.
```js
import { DynamoDBDocumentClient, QueryCommand } from "@aws-sdk/lib-dynamodb";
const params = {
TableName: "YourTableName",
KeyConditionExpression: "#pk = :pk",
ExpressionAttributeNames: { "#pk": "PrimaryKeyAttributeName" },
ExpressionAttributeValues: { ":pk": "PrimaryKeyValue" },
};
const dynamoDbDocumentClient = DynamoDBDocumentClient.from(client);
const data = await dynamoDbDocumentClient.send(new QueryCommand(params));
console.log(data);
```
## Scan a table
Scanning is less performant (O(n)) and most expensive since it requires checking
every item in the database.
```js
import { DynamoDBDocumentClient, ScanCommand } from "@aws-sdk/lib-dynamodb";
const params = {
TableName: "YourTableName",
};
const dynamoDbDocumentClient = DynamoDBDocumentClient.from(client);
const data = await dynamoDbDocumentClient.send(new ScanCommand(params));
```
## Related notes

View file

@ -7,8 +7,7 @@ tags:
# Integrated circuits
An integrated circuit (IC) is a single unit that comprises several logic gates
designed for the easy construction of
[digital circuits](Digital_circuits.md).
designed for the easy construction of [digital circuits](Digital_circuits.md).
The terms "integrated circuit" and "chip" are often used interchangeably.
An IC puts the gates on a single piece of silicon that has electrical contact
@ -24,5 +23,6 @@ to a breadboard.
_An integrated circuit and its use on a breadboard:_
<img align="left" width="200" src="/home/thomas/repos/computer_science/img/integrated-circuit.jpeg">
<img width="200" src="/home/thomas/repos/computer_science/img/breadboard-DIP.jpg">
![](../img/integrated-circuit.jpeg)
![](../img/breadboard-DIP.jpg)

View file

@ -21,5 +21,5 @@ generic diode circuit symbol:
An LED diode lights up when the right amount of current flows through it. A
standard LED has a maximum current of 20mA. An appropriate
[resistor](Resistance.md#resistors)
must therefore be added to the circuit to ensure the current doesn't exeedd this
must therefore be added to the circuit to ensure the current doesn't exceed this
amount.