AWS MFA認証でAWSCLIを使う
ここに書いてあるのを参考に自分の環境に合わせて認証をする。 docs.aws.amazon.com

% aws sts get-session-token --profile credentialに書いてあるprofile名 --serial-number arn:aws:iam::000000000000:mfa/USERNAME --token-code 000000
出力
{
"Credentials": {
"AccessKeyId": "ASIAXXXXXXXXXXXXXXXX",
"SecretAccessKey": "XxXXXxXXXxXXXxXXXxXXXxXXXxXXXxXX",
"SessionToken": "XXXXXXX=",
"Expiration": "2024-08-01T17:58:47Z"
}
}
このAccessKeyIdとSecretAccessKeyとSesionTokenをcredentialsに貼り付けるとAWSCLIで接続する際のMFAでの認証ができるようになる。
awscliとlocalstack
AWSCLIとlocalstack
AWSのサービスを使うときに * バッチ処理などをshellやバッチファイルなどで処理したい時 * AWSを使ったサービスの単体テストでまずはローカルで試したい
そういった場合に使えるのがawscliとlocalstack
AWSCLI
awscliはコマンドラインでAWSのサービスを操作するものでwindows,linux,macなどで使える。
使い方はAWS コマンドラインインターフェイス(CLI: AWSサービスを管理する統合ツール)| AWSからCLIリファレンスを見れば使い方があります(英語)。
localstack
localstackはローカルで起動できるAWSサービスのスタブです。
まずはawsの認証設定をします。
ローカルで動作しますが、AWSCLIで認証作業をするためダミーの認証設定が必要になります
aws configureコマンドでlocalstackのプロファイルを作成します
$ aws configure --profile localstack AWS Access Key ID [None]: dummy AWS Secret Access Key [None]: dummy Default region name [None]: us-east-1 Default output format [None]: json
あとは、GitHub - localstack/localstack: 💻 A fully functional local AWS cloud stack. Develop and test your cloud & Serverless apps offline!からcloneして、プロジェクトルートでdocker-compose up -d を実行すれば使えます。
他の方法ではpythonがインストールしてある環境であれば、pip install localstackが最も簡単にインストールできます(とgithubページに書いてあります)
Powershellの使いみちまとめ(なにかやるごとにここに追記してく)
サーバーはLinuxでも開発はWindowsでやることが多く、設計後に設計書から自動でソースなどを起こすようなスクリプトをPowershellで作る機会が増えてきたのでまとめることにする Pythonとかだと楽なんだろうなあ
ファイル操作
UTF8Bom無しでテキストを出力する
$encode = New-Object Systen.Text.UTF8Encoding $False [System.IO.File]::WriteAllLines($outputfile, "出力テキスト", $encode)
$encodeを変えれば出力エンコードが変えられる テキストは$()で出力する関数から出力するようにすれば長いテキストも出力できる
※リダイレクトではUTF16になってしまう
関数で値を返す方法
Write-Output "テキスト"
関数からテキストを返す場合、Powershellにはreturnがないので、一度Write-Outputなどで出力させ、呼び出し元では$()で囲ってやる必要がある
function outText(){
Write-Output("出力したいテキスト")
}
$(outText)
数値を文字列に変換したい場合は
[string]を使って文字列に変換する
function add($a, $b){
$c = $a + $b
Write-Output("演算:"+[string]$c)
Write-Output("連結"+[string]$a + [string]$b)
}
add 100 200
演算:300
連結:100200
検索
grepっぽいもの
Select-String "検索したい文字列" ファイル名 Select-String -Pattern "正規表現" ファイル名
置換
"文字列".Replace("変えたい文字列","変更する文字列")
"文字列" -Replace "正規表現","変える文字列"
正規表現の表し方は、.、\w+ エスケープ文字は\でなくなので、"をエスケープする場合は"
.は0文字以上の文字列、は前のパターンの繰り返しなのでこの2つで任意の文字列になる。
\wは任意の単語、+で繰り返すので単語の羅列になる
囲み文字の注意点は、""(.*)"","`$1"にした場合、一番外側の""だけが置換されることになる
"aaa","bbb"のようなCSV形式ならaaa","bbbと置換されてしまう
部分置換する場合、"(グループ).*","`$1"で()グループが取り出せる
PowershellでConfluenceの記事を取り出す(2)
実行権限によってスクリプトが実行できない場合はSet-ExecutionPolicyを実行して権限ポリシーを変更する(要管理者権限)
Set-ExecutionPolicy <実行ポリシー>
|実行ポリシー|| |Restricted|| |AllSigned|| |RemoteSigned|| |Unrestricted|| |Bypass||
デバッグ出力
$VerbosePreference = 'Continue' # Verbose On
# $VerbosePreference = 'SilentlyContinue' # Verbose Off
Write-Verbose("出力内容")
$VerbosePreference = 'Continue' を設定すると出力される この場合標準エラーに出力されるのでリダイレクトしても2を指定しない限りファイル出力されない
Pascal/Camel↔snake変換
camelCase→snake_case
$ret = ([regex]"[A-Z]").Replace($org, {"_"+$args[0].Groups[0].Value.ToUpper()})
PascalCaseの場合は先頭の大文字の部分に_が追加されるため先頭1文字を除去するか、1文字目を小文字にしてから変換する必要がある。
snake_case→camelCase
$camel = ([regex]"_([a-z])").Replace($snake, {$args[0].Groups[1].Value.ToUpper()})
PascalCaseにする場合は先頭が小文字のままなので先頭を大文字に変更する。
カレントディレクトリを取得する
$pwd = (Convert-Path .)
実行パスに確実にファイルを保存したい場合などに必要な場合がある。 何も指定しない場合、C:\Users[ユーザーパス]\Documentsなどに保存される場合もある。
PowershellでConfluenceの記事を取り出す
ConfluencePSというモジュールをインポートすると使えるようになる。 実行するときは管理者権限が必要
Install-Module ConfluencePS Update-Module ConfluencePS
使い方は
Import-Module ConfluencePS Set-ConflenceInfo -BaseURI 'https://yourpage.atlassian.net/wiki' -PrompotCredentials
こうすると認証情報を入力するダイアログが出現してID、パスワードを入れるとConfluenceへのアクセスができるようになる。
Get-ConfluencePage -PageID xxxxxx
PageIDで指定したページ番号のQページ内容を取得できる。 これの内容を取り出すためにはどうしたらいいかが次の課題
intelliJでspringboot + myBatisを使ったシステム開発をするための準備
Spring initializr
| OS | Ubuntu 20.04 | |
| IDE | IntelliJ IDEA Community 2020.3 AMD64 | |
| Project | Gradle Project | |
| Language | Kotlin | |
| SpringBoot | 2.4.0 | |
| Project Metadata | Group | com.example.kotlin |
| Artifact | mybatisdemo | |
| Name | mybatisdemo | |
| Description | Demo project for Spring Boot | |
| Package name | com.example.kotlin.mybatisdemo | |
| Packaging | jar | |
| Java | 11 | |
| Dependencies | MyBatis Framework H2 Database | |
IntelliJにmyBatis Builderプラグインをインストール Shift連打(2回くらい早く押せばよいです)でmybatis builderを検索して実行 DBに接続する。
今回はPostgresqlなのでPostgresを選択して接続情報を入力




生成されるもの 生成されるものはxmlの設定ファイルとJavaのソースコードになる。 XMLファイルはmybatis-generator.xml Mapperクラス、モデルクラス、Exapmleクラス、Exampleクラスの中にCriteria、Criterion、CeneratedCriteriaクラスが生成される。 名前は テーブル名Mapper、テーブル名、テーブル名Exampleになる。
powershellを使ったExcelの操作
使いどころ
未だにExcelによる申請書とかが多く、マクロ作るのが権限的にできなかったり他のソフト(rubyとかPythonとか)をインストールできない現場で苦肉の策としてPowershellを使って動かすことになったのでメモ。 Powershellも権限的にスクリプトファイルを実行できない場合もあるけど、最悪でもテキストを流し込んで実行できるのでメモ。
powershellの基本的な出力
Write-Output("リダイレクトするとファイルに出力される")
Write-Host("リダイレクトしてもファイルに出力されない")
スクリプト実行権限ポリシーの変更
powershellで以下を実行
Set-ExecutionPolicy RemoteSigned
ExcelBookのオープンクローズ
Excelオブジェクトの作成
$excel = New-Object -ComObject Excel.Application
実行するExcelの可視化設定
$excel.Visible = $false
Excel Bookのオープン
$xlsxBook = $excel.Workbooks.Open($xlsxName)
Excelのクローズ
# ブックを閉じる $xlsxBook.Close() # Excelオブジェクトの終了 $excel.Quit() # インスタンスの削除 $excel = $null
シートの取得
$sheet = xlsxBook.Worksheets
$xSheet = $sheet.Item("シート名")
シート名、インデックス
Write-Host($xSheet.Name) Write-Host($xSheet.Index)
セルの値
$cVal = $xSheet.Range("A2").Text
$cVal = $xSheet.Cells(2, 1).Text